vsftpd配置參數詳細整理


vsftpd配置參數詳細整理
  -|白王斧三又干一

 

vsftpd配置參數詳細整理     -|白王斧三又干一 發表於 2005-10-23 20:30:00  
 
1、vsftpd配置參數詳細整理
#接受匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#如果匿名用戶需要密碼,那么使用banned_email_file里面的電子郵件地址的用戶不能登錄
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登錄
check_shell=YES
#若啟用此選項,userlist_deny選項才被啟動
userlist_enable=YES
#若為YES,則userlist_file中的用戶將不能登錄,為NO則只有userlist_file的用戶可以登錄
userlist_deny=NO
#如果和chroot_local_user一起開啟,那么用戶鎖定的目錄來自/etc/passwd每個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值為ftp。
ftp_username=FTP

#################用戶權限控制###############
#可以上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶可以上傳
anon_upload_enable=NO
#匿名用戶可以建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改權限?)
anon_other_write_enable=NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。默認值為YES。
anon_world_readable_only=YES
#如果開啟,那么所有非匿名登陸的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#允許使用"async ABOR"命令,一般不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值為NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值為NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此數據夾中。默認值為/usr/share/empty
secure_chroot_dir=/usr/share/empty

###################超時設置##################
#空閑連接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#P***S請求超時
ACCEPT_TIMEOUT=60
#PROT模式連接超時
connect_timeout=60

################服務器功能選項###############
#開啟日記功能
xferlog_enable=YES
#使用標准格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回復,當調試比較有用.
#log_ftp_protocol=NO
#允許使用pasv模式
pasv_enable=YES
#關閉安全檢查,小心呀.
#pasv_promiscuous+NO
#允許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啟tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設為vsftpd。
pam_service_name=vsftpd
#當服務器運行於最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回復時跳轉到指定的IP地址.(服務器聯接跳轉?)
pasv_address=(none)

#################服務器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時都開着的,就是那個什么standalone模式
listen=YES
#當使用者登入后使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。
text_userdb_names=NO
#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果
use_localtime=NO
#測試平台優化
#use_sendfile=YES

################信息類設置################
#login時顯示歡迎信息.如果設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#允許為目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YES

############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/允許用戶登錄的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登錄信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登陸時作為密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message

############## 目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對用戶家目錄來說的.
local_root=webdisk #此項設置每個用戶登陸后其根目錄為/home/username/webdisk
#匿名用戶登陸后的根目錄
anon_root=/var/ftp

#############用戶連接選項#################
#可接受的最大client數目
max_clients=100
#每個ip的最大client數目
max_per_ip=5
#使用標准的20端口來連接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv連接模式時可以使用port 范圍的上界,0 表示任意。默認值為0。
pasv_max_port=0
#pasv連接模式時可以使用port 范圍的下界,0 表示任意。默認值為0。
pasv_min_port=0

##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000

########################################
別外,如果要對每個用戶進行單獨的控制,只需要在user_config_dir中建立username文件,內容為數據傳輸和用戶權利里面設置個人的合適的選項,用戶自定義文件同樣適合用pam支持的虛擬用戶
附: FTP 數字代碼的意義
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,准備傳送。
150 文件狀態正常,開啟數據連接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制連接埠關閉,可以注銷。
225 數據連結開啟,但無傳輸動作。
226 關閉數據連接端口,請求的文件操作成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要賬號信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確




文檔之vsftp配置大全

 

安裝篇  
===============  
這個文件詳細介紹了如何從VSFTPD的.tar.gz分發包開始,建立和安裝並運行VSFTPD。 

1)建立VSFTPD  
先進入解壓.tar.gz文件后產生的目錄內。如下:  
cd vsftpd-2.0.1 

編輯"builddefs.h"以操作compile-time設定。(tcp_wrappers build,等) 

輸入make,回車(如果它不工作請發郵件通知我  .  
這將產生一個二進制文件,你可以驗證一下。如下:  
[chris@localhost vsftpd]$ ls -l vsftpd  
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd 

2)滿足VSFTPD安裝所需的一些條件  
VSFTPD默認設置需要一個"nobody"用戶,如果這個用戶不存在,那么添加它。如下:  
[root@localhost root]# useradd nobody  
useradd: user nobody exists 

VSFTPD默認設置需要一個空目錄:/usr/share/empty.增加這個目錄,如果它還不存在的話。如下:  
[root@localhost root]# mkdir /usr/share/empty/  
mkdir: cannot create directory `/usr/share/empty': File exists 

如果容許匿名用戶(anonymous),那么你將需要一個"ftp"用戶和其home目錄(這個home目錄不屬於“ftp”用戶,而且“ftp"用戶也對其沒有寫權限)在你的系統中存在。  
以下命令用來創建一個"ftp"用戶,如果它還不存在的話。  
[root@localhost root]# mkdir /var/ftp/  
[root@localhost root]# useradd -d /var/ftp ftp 

(即使你的"ftp"用戶已經存在,完成以下這兩步也是很有好處的:)  
[root@localhost root]# chown root.root /var/ftp  
[root@localhost root]# chmod og-w /var/ftp 

3)安裝VSFTPD的配置、執行和幫助文件。  
輸入"make install"后會將二進制文件和幫助文件拷貝到適當的目錄。  
你也可以手工拷貝這些文件:  
cp vsftpd /usr/local/sbin/vsftpd  
cp vsftpd.conf.5 /usr/local/man/man5  
cp vsftpd.8 /usr/local/man/man8 

"make install"不會拷貝默認的配置文件,所以建議你手工拷貝:  
cp vsftpd.conf /etc  
daidong注:根據你系統版本的不同,也可能是 cp vsftpd.conf /etc/vsftpd 

4)測試 (無inetd影響)  
VSFTPD能運行在獨立模式(standalone)或者通過inetd(xinetd)來啟動。  
你能通過inetd來運行vsftpd以更好地控制它。但我們在首次運行時不這么做,以便檢查系統是否現在配置正常。  
編輯/etc/vsftpd.conf(daidong注:也可能是/etc/vsftpd/vsftpd.conf),並在最下面加入以下這一行:  
listen=YES 

這將告訴VSFTPD不要從inetd啟動。  
OK,現在試着啟動FTP。  
以ROOT登錄。  
確定你沒有運行其他FTP服務(否則VSFTPD不能占用FTP所需的21端口)。  
運行那個二進制文件,如下:  
[root@localhost root]# /usr/local/sbin/vsftpd &  
[1] 2104 

如果一切正常,那么你將連上FTP服務器,如下:  
[chris@localhost chris]$ ftp localhost  
Connected to localhost (127.0.0.1).  
220 (vsFTPd 1.1.1)  
Name (localhost:chris): ftp  
331 Please specify the password.  
Password:  
230 Login successful. Have fun.  
Remote system type is UNIX.  
Using binary mode to transfer files.  
ftp> ls  
227 Entering Passive Mode (127,0,0,1,229,133)  
150 Here comes the directory listing.  
d--x--x--x 2 0 0 4096 Jan 14 2002 bin  
d--x--x--x 2 0 0 4096 Apr 21 20:52 etc  
drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib  
drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub  
226 Directory send OK.  
ftp> 

5)從inetd或者類似方式啟動(官方推薦使用standalone方式)  
你也許想通過inetd或者類似方式啟動VSFTPD,因為這能給你更多的感受。例如xinetd就有很多的設置。  
(注意:VSFTPD的內在機制屏蔽了xinetd的大多數的有用的設置)。 

如果使用標准的"inetd",你需要編輯/etc/inetd.conf,在其中加入以下一行:  
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd 

(確定你刪除或者注釋掉一些已存在的FTP服務配置行。如果你沒有安裝tcp_wrappers,或者不想使用它們,那么請去掉/usr/sbin/tcpd part). 

inetd需要指定並重新載入它的配置文件:  
kill -SIGHUP `pidof inetd` 

如果你想使用"xinetd",請參閱我們提供的范例 /EXAMPLE/INTERNET_SITE/README. 而其他范例文件將告訴你如何調配出更強大的xinetd功能。 

6)為本地登錄配置PAM文件(可選)  
如果你在一台激活了PAM的設備上運行VSFTPD,你需要提供一個 /etc/pam.d/ftp 文件。否則非匿名用戶將無法登錄服務器。  
(注:如果你的PAM版本比較老,那么這個文件也許是 /etc/pam.conf). 

做為一個標准設置,你可以拷貝一個已提供的范例文件,如下:  
cp RedHat/vsftpd.pam /etc/pam.d/ftp 

7)自定義你的配置文件  
完成以上的配置后,建議你安裝一個配置文件。默認的配置文件位置是/etc/vsftpd.conf. 在VSFTPD軟件分發包內有一個范例配置文件。  
你可以拷貝其為/etc/vsftpd.conf以做進一步修改。  
cp vsftpd.conf /etc  
(daidong注:也可能是 cp vsftpd.conf /etc/vsftpd ). 

這個默認配置即不容許本地登錄也不容許匿名用戶上傳,也許你希望更改這個配置。 


其它  
===================  
測試平台 (已通過)  
-流行的,功能完善的平台都能測試通過。在以下平台的較新版本,VSFTPD工作得很好。在其大部分較早的版本下,也運行正常。  
- RedHat Linux  
- RedHat Enterprise Linux  
- Solaris / GNU tools (Solaris 8 or newer)  
- SuSE Linux  
- Debian Linux  
- OpenBSD  
- FreeBSD  
- NetBSD  
- HP-UX / GNU tools  
- IRIX / GNU tools  
- Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK) 
虛擬用戶1  
=============  
這個例子示范了如何為虛擬用戶設置VSFTPD/PAM。  
虛擬用戶是一個在系統中並不作為一個登錄實體而存在的用戶。使用虛擬用戶比使用真實的用戶更安全,因為這個賬號只能用於FTP服務器。 

虛擬用戶經常用來提供給不大可信任的用戶訪問某些資源,而這些資源通常是其他普通用戶不能訪問的。 

1)創建虛擬用戶數據庫  
我們將使用pam_userdb來認證虛擬用戶。這需要提供一個“db"格式(一種通用數據庫格式)的用戶名/密碼文件。  
創建一個"db"格式的文件,首先要創建一個標准文本文件,並把用戶名,密碼以豎直排列方式輸入。如logins.txt:  
tom  
foo  
fired  
bar  
這個例子中,tom用戶的密碼是foo.fired用戶的密碼是bar.  
以ROOT登錄,創建一個數據庫文件,如下:  
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db  
(這要求berkeley db程序已經安裝)  
(注:一些系統也許安裝了多個版本的"db",所以某些情況下你可能使用"db3_load"才是正確的。對於一些 Debian系統就是這樣。  
關鍵在於要讓pam_userdb相信它的登錄數據庫是哪一個db版本所產生(一般都是db3,盡管你的系統里可能安裝的是db4).) 

這將創建/etc/vsftpd_login.db文件。顯然,你希望設定這個文件的權限:  
chmod 600 /etc/vsftpd_login.db 

要了解更多關於維護你的登錄數據庫的信息,請在"berkeley DB"察看相關文檔:  
http://www.sleepycat.com/docs/utility/index.html 

2)用你的新數據庫創建一個PAM文件  
請參考范例vsftpd.pam,它包含2行:  
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login  
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 

這是告訴PAM用新的數據庫去驗證用戶。把這個PAM文件拷貝到PAM目錄,一般是/etc/pam.d  
cp vsftpd.pam /etc/pam.d/ftp 

3)為虛擬用戶設置home目錄  
useradd -d /home/ftpsite virtual  
ls -ld /home/ftpsite  
(which should give):  
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite 

我們已經創建了一個名叫"virtual"的用戶,home目錄是"/home/ftpsite".  
我們拷貝一些東西到這個下載目錄:  
cp /etc/hosts /home/ftpsite  
chown virtual.virtual /home/ftpsite/hosts 

4)創建你的vsftpd.conf配置文件  
請參考這個目錄下的例子。讓我們一行行地看一看這些配置:  
anonymous_enable=NO  
local_enable=YES 

安全起見,屏蔽了匿名用戶,只啟用了非匿名用戶(即虛擬用戶使用的賬號) 

write_enable=NO  
anon_upload_enable=NO  
anon_mkdir_write_enable=NO  
anon_other_write_enable=NO 

為了安全請確認這幾個配置,這將關閉寫的權限。 

chroot_local_user=YES 

這將把虛擬用戶鎖定在我們在以上設置的/home/ftpsite目錄內。 

guest_enable=YES  
guest_username=virtual 

guest_enable非常重要-它激活了虛擬用戶!而guest_username說明所有的虛擬用戶都對應我們在上面設置的真實用戶:“virtual".  
這同時確定了虛擬用戶在文件系統中的位置,也就是說,虛擬用戶的home目錄即"virtual"用戶的home目錄:/home/ftpsite。 

listen=YES  
listen_port=10021 

這讓VSFTPD以獨立模式(standalone)運行,而不是從inetd方式啟動。也就是說,你運行VSFTPD可執行文件就啟動了FTP服務。  
同時也讓VSFTPD啟用非標准端口10021來監聽FTP請求(FTP一般使用21端口)。 

pasv_min_port=30000  
pasv_max_port=30999 

這設定了被動模式的FTP請求端口。當你配置了一個防火牆的時候,這個配置就很好用。 

拷貝范例配置文件到/etc  
cp vsftpd.conf /etc/  
(daidong注:也可能是/etc/vsftpd) 

5)啟動VSFTPD  
到VSFTPD二進制文件所在的目錄,輸入:  
./vsftpd 

如果一切正常,這個命令將生效。否則,你將會看到一些錯誤信息的反饋。 

6)測試  
啟動另一個會話。(或者ctrl-z,再輸入"bg",讓VSFTPD在后台運行)。  
這是一個FTP會話的例子: 

ftp localhost 10021  
Connected to localhost (127.0.0.1).  
220 ready, dude (vsFTPd 1.1.0: beat me, break me)  
Name (localhost:chris): tom  
331 Please specify the password.  
Password:  
230 Login successful. Have fun.  
Remote system type is UNIX.  
Using binary mode to transfer files.  
ftp> pwd  
257 "/"  
ftp> ls  
227 Entering Passive Mode (127,0,0,1,117,135)  
150 Here comes the directory listing.  
226 Transfer done (but failed to open directory).  
ftp> size hosts  
213 147  
ftp> 

注釋:  
密碼是"foo"  
出現”failed to open directory“的話,別擔心。這是因為/home/ftpsite目錄不容許被任意瀏覽。  
(我們可以更改anon_world_readable_only=NO以消除告警,但為了安全,還是保留這個配置)。  
我們能通過size命令看到我們已經訪問了被我們拷貝到這里的"hosts"文件。 

vsftpd.conf  
anonymous_enable=NO  
local_enable=YES  
write_enable=NO  
anon_upload_enable=NO  
anon_mkdir_write_enable=NO  
anon_other_write_enable=NO  
chroot_local_user=YES  
guest_enable=YES  
guest_username=virtual  
listen=YES  
listen_port=10021  
pasv_min_port=30000  
pasv_max_port=30999 
虛擬用戶2  
===============  
這個例子將演示如何擴展“VIRTUAL_USERS”那個范例,從而實現更復雜一點的配置。 

讓我們假定我們需要2種不同的虛擬用戶:一種只能瀏覽並下載資源,另一種能上傳文件並瀏覽站內資源。 

要激活這個設置,我們將使用VSFTPD的強大的“單個用戶配置”功能(是V1.1.0后出現的新功能)。 

在前一個虛擬用戶范例中,我們創建了2個用戶-tom和fred.  
我們將實現fred有寫權限以上傳新文件,同時tom只能下載文件。 

1)激活單個用戶配置功能。  
要激活這個功能,需要增加以下配置行到配置文件: 

user_config_dir=/etc/vsftpd_user_conf 

並且創建目錄: 

mkdir /etc/vsftpd_user_conf 

2)授予tom讀取所有文件和目錄的權限  
在上一個例子的最后,我們注意到虛擬用戶只能瀏覽所有的完全可讀屬性的目錄和文件。我們使/home/ftpsite完全可讀,而且被上傳的文件也  
賦予了完全可讀的權限(daidong注:意思是說這樣虛擬用戶就能讀取所有的文件了)。但實現這個目的的另一個方法是授權tom能下載那些非完全可讀的文件。 

對於tom,他的配置文件中需要修改一個設置:  
anon_world_readable_only: 

設為"anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom  
(daidong注:既把默認配置修改了anon_world_readable_only后,復制到/etc/vsftpd_user_conf下,名字為tom) 

驗證一下結果-以tom登錄,“ls”將返回一個目錄列表。如果以fred登錄將不會如此。 

注意:重啟VSFTPD以啟用配置文件/etc/vsftpd.conf(高級用戶也可以發送SIGHUP給VSFTPD的監聽進程). 

3)授予freg讀取所有文件/目錄並創建新文件/目錄的權限,但讓他不能對已存在的文件/目錄進行操作. 

echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred  
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred  
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred 

驗證一下-以tom登錄,將不能上傳,而fred就可以.  
試圖刪除一個文件--噢,你們倆都不行! 
配置詳解  
=============  
VSFTPD.CONF.5  
================  
名字  
vsftpd.conf :VSFTPD的配置文件 

描述:  
vsftpd.conf 用來控制VSFTPD的各項功能。默認狀態下,它的位置是/etc/vsftpd.conf。  
(譯者注:也許老的LINUX版本下,配置文件是這個位置,但新的LINUX版本,例如FC2,配置文件是在/etc/vsftpd目錄下。  
但是也很可能和安裝方式有關,RPM包安裝,配置文件是/etc/vsftpd.conf. 源碼包安裝:/etc/vsftpd/vsftpd.conf.我不確定。  
但以后我不再特別指出了,真累!!)  
然而,你也可以通過修改配置行來指定到其它目錄。這一點很有用,因為也許你想使用一些高級inetd功能,例如xinetd,在一個多虛擬主機的機器上調用不同的配置文件。 

格式  
VSFTPD.conf 的格式非常簡單,每行要么是一個注釋,要么是一個指令。注釋行以#開始並被忽略掉。指令行格式如下:  
配置項=參數值  
很重要的一點是,這個格式里不存在任何空格。  
默認的,每一個配置項在配置文件里都占一編輯行,可以被修改。 

布爾選項  
參數值的布爾選項可以是:  
YES或者NO 

allow_anon_ssl  
只有ss1_enable激活了才可以啟用此項。如果設置為YES,匿名用戶將容許使用安全的SSL連接服務器。  
默認值:NO 

anon_mkdir_write_enable  
如果設為YES,匿名用戶將容許在指定的環境下創建新目錄。如果此項要生效,那么配置write_enable必須被激活,並且匿名用戶必須在其父目錄有寫權限。  
默認值:NO 

anon_other_write_enable  
如果設置為YES,匿名用戶將被授予較大的寫權限,例如刪除和改名。一般不建議這么做,除非想完全授權。  
默認值:NO 

anon_upload_enable  
如果設為YES,匿名用戶就容許在指定的環境下上傳文件。如果此項要生效,那么配置write_enable必須激活。並且匿名用戶必須在相關目錄有寫權限。  
默認值:NO 

anon_world_readable_only  
啟用的時候,匿名用戶只容許下載完全可讀的文件,這也就容許了ftp用戶擁有對文件的所有權,尤其是在上傳的情況下。  
默認值:YES 

anonymous_enable  
控制是否容許匿名用戶登錄。如果容許,那么“ftp”和“anonymous”都將被視為“anonymous"而容許登錄。  
默認值:YES 

ascii_download_enable  
啟用時,用戶下載時將以ASCII模式傳送文件。  
默認值:NO 

ascii_upload_enable  
啟用時,用戶上傳時將以ASCII模式傳送文件。  
默認值:NO 

async_abor_enable  
啟用時,一個特殊的FTP命令"async ABOR”將容許使用。只有不正常的FTP客戶端要使用這一點。而且,這個功能又難於操作,所以,  
默認是把它關閉了。但是,有些客戶端在取消一個傳送的時候會被掛死(daidong注:估計是客戶端無響應了),那你只有啟用這個功能才能避免這種情況。  
默認值:NO 

background  
啟用時,並且VSFTPD是“listen”模式啟動的(daidong注:就是standalone模式),VSFTPD將把監聽進程置於后台。但訪問VSFTPD時,控制台將立即被返回到SHELL。  
默認值:NO 

check_shell  
注意:這個選項只對非PAM結構的VSFTPD才有效。如果關閉,VSFTPD將不檢查/etc/shells以判定本地登錄的用戶是否有一個可用的SHELL。  
默認值:YES 

chmod_enable  
啟用時,將容許使用SITE CHMOD命令。注意,這只能用於本地用戶。匿名用戶絕不能使用SITE CHMOD。  
默認值:YES 

chown_uploads  
如果啟用,所以匿名用戶上傳的文件的所有者將變成在chown_username里指定的用戶。這對管理FTP很有用,也許也對安全有益。  
默認值:NO 

chroot_list_enable  
如果激活,你要提供一個用戶列表,表內的用戶將在登錄后被放在其home目錄,鎖定在虛根下 (daidong注:進入FTP后,PWD一下,可以看到當前目錄是"/",這就是虛根。是FTP的根目錄,並非FTP服務器系統的根目錄)。如果 chroot_local_user設為YES后,其含義會發生一點變化。  
在這種情況下,這個列表內的用戶將不被鎖定在虛根下。  
默認情況下,這個列表文件是/etc/vsftpd.chroot_list, 但你也可以通過修改chroot_list_file來改變默認值。  
默認值:NO 

chroot_local_user  
如果設為YES,本地用戶登錄后將被(默認地)鎖定在虛根下,並被放在他的home目錄下。  
警告:  
這個配置項有安全的意味,特別是如果用戶有上傳權限或者可使用SHELL的話。在你確定的前提下,再啟用它。  
注意,這種安全暗示並非只存在於VSFTPD,其實是廣泛用於所有的希望把用戶鎖定在虛根下的FTP軟件。  
默認值:NO 

connect_from_port_20  
這用來控制服務器是否使用20端口號來做數據傳輸。為安全起見,有些客戶堅持啟用。相反,關閉這一項可以讓VSFTPD更加大眾化。  
默認值:NO (但在范例配置文件中,啟用了,即YES) 

deny_email_enable  
如果激活,你要提供一個關於匿名用戶的密碼E-MAIL表(daidong注:我們都知道,匿名用戶是用郵件地址做密碼的)以阻止以這些密碼登錄的匿名用戶。  
默認情況下,這個列表文件是/etc/vsftpd.banner_emails,但你也可以通過設置banned_email_file來改變默認值。  
默認值:NO 

dirlist_enable  
如果設置為NO,所有的列表命令(daidong注:如ls)都將被返回“permission denied”提示。  
默認值:YES 

dirmessage_enable  
如果啟用,FTP服務器的用戶在首次進入一個新目錄的時候將顯示一段信息。默認情況下,會在這個目錄中查找.message文件,但你也可以  
通過更改message_file來改變默認值。  
默認值:NO (但在配置范例文件中啟用了它) 

download_enable  
如果設為NO,下載請求將返回“permission denied”。  
默認值:YES 

dual_log_enable  
如果啟用,兩個LOG文件會各自產生,默認的是/var/log/xferlog和/var/log/vsftpd.log。前一個是wu-ftpd格式的LOG,能被通用工具分析。  
后一個是VSFTPD的專用LOG格式。  
默認值: NO 

force_dot_files  
如果激活,即使客戶端沒有使用“a”標記,(FTP里)以.開始的文件和目錄都會顯示在目錄資源列表里。但是把"."和".."不會顯示。(daidong注:即LINUX下  
的當前目錄和上級目錄不會以‘.’或‘..’方式顯示)。  
默認值:NO 

force_local_data_ssl  
只有在ssl_enable激活后才能啟用。如果啟用,所有的非匿名用戶將被強迫使用安全的SSL登錄以在數據線路上收發數據。  
默認值:YES 

force_local_logins_ssl  
只有在ssl_enable激活后才能啟用。如果啟用,所有的非匿名用戶將被強迫使用安全的SSL登錄以發送密碼。  
默認值:YES 

guest_enable  
如果啟用,所有的非匿名用戶登錄時將被視為”游客“,其名字將被映射為guest_username里所指定的名字。  
默認值:NO 

hide_ids  
如果啟用,目錄資源列表里所有用戶和組的信息將顯示為"ftp".  
默認值:NO 

listen  
如果啟用,VSFTPD將以獨立模式(standalone)運行,也就是說可以不依賴於inetd或者類似的東東啟動。直接運行VSFTPD  
的可執行文件一次,然后VSFTPD就自己去監聽和處理連接請求了。  
默認值:NO 

listen_ipv6  
類似於listen參數的功能,但有一點不同,啟用后VSFTPD會去監聽IPV6套接字而不是IPV4的。這個設置和listen的設置互相排斥。  
默認值:NO 

local_enable  
用來控制是否容許本地用戶登錄。如果啟用,/etc/passwd里面的正常用戶的賬號將被用來登錄。  
默認值:NO 

log_ftp_protocol  
啟用后,如果xferlog_std_format沒有被激活,所有的FTP請求和反饋信息將被紀錄。這常用於調試(debugging)。  
默認值:NO 

ls_recurse_enable  
如果啟用,"ls -R"將被容許使用。這是為了避免一點點安全風險。因為在一個大的站點內,在目錄頂層使用這個命令將消耗大量資源。  
默認值:NO 

no_anon_password  
如果啟用,VSFTPD將不會向匿名用戶詢問密碼。匿名用戶將直接登錄。  
默認值:NO 

no_log_lock  
啟用時,VSFTPD在寫入LOG文件時將不會把文件鎖住。這一項一般不啟用。它對一些工作區操作系統問題,如Solaris / Veritas文件系統共存時有用。  
因為那在試圖鎖定LOG文件時,有時候看上去象被掛死(無響應)了。(daidong注:這我也不是很理解。所以翻譯未必近乎原意。原文如下:It exists to workaround  
operating system bugs such as the Solaris / Veritas filesystem combination  
which has been observed to sometimes exhibit hangs trying to lock log files.)  
默認值:NO 

one_process_model  
如果你的LINUX核心是2.4的,那么也許能使用一種不同的安全模式,即一個連接只用一個進程。只是一個小花招,但能提高FTP的性能。請確定需要后再啟用它,而且也請確定你的  
站點是否會有大量的人同時訪問。  
默認值:NO 

passwd_chroot_enable (daidong注:這段自己看,無語...)  
if enabled, along with  
.BR chroot_local_user  
, then a chroot() jail location may be specified on a per-user basis. Each  
user's jail is derived from their home directory string in /etc/passwd. The  
occurrence of /./ in the home directory string denotes that the jail is at that  
particular location in the path.  
默認值:NO 

pasv_enable  
如果你不想使用被動方式獲得數據連接,請設為NO。  
默認值:YES 

pasv_promiscuous  
如果你想關閉被動模式安全檢查(這個安全檢查能確保數據連接源於同一個IP地址)的話,設為YES。確定后再啟用它(daidong注:原話是:只有你清楚你在做什么時才啟用它!)  
合理的用法是:在一些安全隧道配置環境下,或者更好地支持FXP時(才啟用它)。  
默認值:NO 

port_enable  
如果你想關閉以端口方式獲得數據連接時,請關閉它。  
默認值:YES 

port_promiscuous  
如果你想關閉端口安全檢查(這個檢查可以確保對外的(outgoing)數據線路只通向客戶端)時,請關閉它。確認后再做!  
默認值:NO 

run_as_launching_user  
如果你想讓一個用戶能啟動VSFTPD的時候,可以設為YES。當ROOT用戶不能去啟動VSFTPD的時候會很有用(daidong注:應該不是說ROOT用戶沒有權限啟動VSFTPD,  
而是因為別的,例如安全限制,而不能以ROOT身份直接啟動VSFTPD)。強烈警告!!別啟用這一項,除非你完全清楚你在做什么(daidong:無語....)!!!隨意地啟動這一項會導致  
非常嚴重的安全問題,特別是VSFTPD沒有或者不能使用虛根技術來限制文件訪問的時候(甚至VSFTPD是被ROOT啟動的)。有一個愚蠢的替代方案是啟用deny_file,將其設置為{/*,*..*}等,  
但其可靠性卻不能和虛根相比,也靠不住。  
如果啟用這一項,其他配置項的限制也會生效。例如,非匿名登錄請求,上傳文件的所有權的轉換,用於連接的20端口和低於1024的監聽端口將不會工作。其他一些配置項也可能被影響。  
默認值:NO 

secure_email_list_enable  
如果你想只接受以指定E-MAIL地址登錄的匿名用戶的話,啟用它。這一般用來在不必要用虛擬用戶的情況下,以較低的安全限制去訪問較低安全級別的資源。如果啟用它,匿名用戶除非  
用在email_password_file里指定的E-MAIL做為密碼,否則不能登錄。這個文件的格式是一個密碼一行,而且沒有額外的空格(daidong注:whitespace,譯為空格,不知道是否正確)。  
默認的文件名是:/etc/vsftpd.email_passwords.  
默認值:NO 

session_support  
這將配置是否讓VSFTPD去嘗試管理登錄會話。如果VSFTPD管理會話,它會嘗試並更新utmp和wtmp。它也會打開一個pam會話(pam_session),直到LOGOUT才會關閉它,如果使用PAM進行認證的話。  
如果你不需要會話紀錄,或者想VSFTPD運行更少的進程,或者讓它更大眾化,你可以關閉它。  
注:utmp和wtmp只在有PAM的環境下才支持。  
默認值:NO 

setproctitle_enable  
如果啟用,VSFTPD將在系統進程列表中顯示會話狀態信息。換句話說,進程名字將變成VSFTPD會話當前正在執行的動作(等待,下載等等)。為了安全目的,你可以關閉這一項。  
默認值:NO 

ssl_enable  
如果啟用,vsftpd將啟用openSSL,通過SSL支持安全連接。這個設置用來控制連接(包括登錄)和數據線路。同時,你的客戶端也要支持SSL才行。  
注意:小心啟用此項.VSFTPD不保證OpenSSL庫的安全性。啟用此項,你必須確信你安裝的OpenSSL庫是安全的。  
默認值:NO 

ssl_sslv2  
要激活ssl_enable才能啟用它。如果啟用,將容許SSL V2協議的連接。TLS V1連接將是首選。  
默認值:NO 

ssl_sslv3  
要激活ssl_enable才能啟用它。如果啟用,將容許SSL V3協議的連接。TLS V1連接將是首選。  
默認值:NO 

ssl_tlsv1  
要激活ssl_enable才能啟用它。如果啟用,將容許TLS V1協議的連接。TLS V1連接將是首選。  
默認值:YES 

syslog_enable  
如果啟用,系統log將取代vsftpd的log輸出到/var/log/vsftpd.log.FTPD的了log工具將不工作。  
默認值:NO 

tcp_wrappers  
如果啟用,vsftpd將被tcp_wrappers所支持。進入的(incoming)連接將被tcp_wrappers訪問控制所反饋。如果tcp_wrappers設置了  
VSFTPD_LOAD_CONF環境變量,那么vsftpd將嘗試調用這個變量所指定的配置。  
默認值:NO 

text_userdb_names  
默認情況下,在文件列表中,數字ID將被顯示在用戶和組的區域。你可以編輯這個參數以使其使用數字ID變成文字。為了保證FTP性能,默認  
情況下,此項被關閉。  
默認值:NO 

tilde_user_enable  
如果啟用,vsftpd將試圖解析類似於~chris/pics的路徑名(一個"~"(tilde)后面跟着個用戶名)。注意,vsftpd有時會一直解析路徑名"~"和"~/"(在這里,~被解析成內部登錄目錄)。  
~用戶路徑(~user paths)只有在當前虛根下找到/etc/passwd文件時才被解析。  
默認值:NO 

use_localtime  
如果啟用,vsftpd在顯示目錄資源列表的時候,在顯示你的本地時間。而默認的是顯示GMT(格林尼治時間)。通過MDTM FTP命令來顯示時間的話也會被這個設置所影響。  
默認值:NO 

use_sendfile  
一個內部設定,用來測試在你的平台上使用sendfile()系統呼叫的相關好處(benefit).  
默認:YES 

userlist_deny  
這個設置在userlist_enable被激活后能被驗證。如果你設置為NO,那么只有在userlist_file里明確列出的用戶才能登錄。  
如果是被拒絕登錄,那么在被詢問密碼前,用戶就將被系統拒絕。  
默認值:YES 

userlist_enable  
如果啟用,vsftpd將在userlist_file里讀取用戶列表。如果用戶試圖以文件里的用戶名登錄,那么在被詢問用戶密碼前,他們就將被系統拒絕。  
這將防止明文密碼被傳送。參見userlist_deny。  
默認值:NO 

virtual_use_local_privs  
如果啟用,虛擬用戶將擁有和本地用戶一樣的權限。默認情況下,虛擬用戶就擁有和匿名用戶一樣的權限,而后者往往有更多的限制(特別是寫權限)。  
默認值:NO 

write_enable  
這決定是否容許一些FTP命令去更改文件系統。這些命令是STOR, DELE, RNFR, RNTO, MKD, RMD, APPE 和 SITE。  
默認值:NO 

xferlog_enable  
如果啟用,一個log文件將詳細紀錄上傳和下載的信息。默認情況下,這個文件是/var/log/vsftpd.log,但你也可以通過更改vsftpd_log_file來指定其默認位置。  
默認值:NO (但在范例配置文件中,啟用了這一項) 

xferlog_std_format  
如果啟用,log文件將以標准的xferlog格式寫入(wu-ftpd使用的格式),以便於你用現有的統計分析工具進行分析。但默認的格式具有更好的可讀性。默認情況下,log文件是在/var/log/xferlog。  
但是,你可以通過修改xferlog_file來指定新路徑。  
默認值:NO 

======  
數字選項  
以下是數字配置項。這些項必須設置為非負的整數。為了方便umask設置,容許輸入八進制數,那樣的話,數字必須以0開始。 

accept_timeout  
超時,以秒為單位,設定遠程用戶以被動方式建立連接時最大嘗試建立連接的時間。  
默認值:60 

anon_max_rate  
對於匿名用戶,設定容許的最大傳送速率,單位:字節/秒。  
默認值:0 (無限制) 

anon_umask  
為匿名用戶創建的文件設定權限。注意:如果你想輸入8進制的值,那么其中的0不同於10進制的0。  
默認值:077 

connect_timeout  
超時。單位:秒。是設定遠程用戶必須回應PORT類型數據連接的最大時間。  
默認值:60 

data_connection_timeout  
超時,單位:秒。設定數據傳輸延遲的最大時間。時間一到,遠程用戶將被斷開連接。  
默認值:300 

file_open_mode  
對於上傳的文件設定權限。如果你想被上傳的文件可被執行,umask要改成0777。  
默認值:0666 

ftp_data_port  
設定PORT模式下的連接端口(只要connect_from_port_20被激活)。  
默認值:20 

idle_session_timeout  
超時。單位:秒。設置遠程客戶端在兩次輸入FTP命令間的最大時間。時間一到,遠程客戶將被斷開連接。  
默認值:300 

listen_port  
如果vsftpd處於獨立運行模式,這個端口設置將監聽的FTP連接請求。  
默認值:21 

local_max_rate  
為本地認證用戶設定最大傳輸速度,單位:字節/秒。  
默認值:0(無限制) 

local_umask  
設置本地用戶創建的文件的權限。注意:如果你想輸入8進制的值,那么其中的0不同於10進制的0。  
默認值:077 

max_clients  
如果vsftpd運行在獨立運行模式,這里設置了容許連接的最大客戶端數。再后來的用戶端將得到一個錯誤信息。  
默認值:0(無限制) 

max_per_ip  
如果vsftpd運行在獨立運行模式,這里設置了容許一個IP地址的最大接入客戶端。如果超過了最大限制,將得到一個錯誤信息。  
默認值:0(無限制) 

pasv_max_port  
指定為被動模式數據連接分配的最大端口。可用來指定一個較小的范圍以配合防火牆。  
默認值:0(使用任何端口) 

pasv_min_port  
指定為被動模式數據連接分配的最小端口。可用來指定一個較小的范圍以配合防火牆。  
默認值:0(使用任何端口) 

trans_chunk_size  
你一般不需要改這個設置。但也可以嘗試改為如8192去減小帶寬限制的影響。  
默認值:0(讓vsftpd自行選擇) 

===========  
STRING 配置項  
以下是STRING 配置項 

anon_root  
設置一個目錄,在匿名用戶登錄后,vsftpd會嘗試進到這個目錄下。如果失敗則略過。  
默認值:無 

banned_email_file  
deny_email_enable啟動后,匿名用戶如果使用這個文件里指定的E-MAIL密碼登錄將被拒絕。  
默認值:/etc/vsftpd.banned_emails 

banner_file  
設置一個文本,在用戶登錄后顯示文本內容。如果你設置了ftpd_banner,ftpd_banner將無效。  
默認值:無 

chown_username  
改變匿名用戶上傳的文件的所有者。需設定chown_uploads。  
默認值:ROOT 

chroot_list_file  
這個項提供了一個本地用戶列表,表內的用戶登錄后將被放在虛根下,並鎖定在home目錄。這需要chroot_list_enable項被啟用。  
如果chroot_local_user項被啟用,這個列表就變成一個不將列表里的用戶鎖定在虛根下的用戶列表了。  
默認值:/etc/vsftpd.chroot_list 

cmds_allowed  
以逗號分隔的方式指定可用的FTP命令(post login. USER, PASS and QUIT 是始終可用的命令)。  
其他命令將被屏蔽。這是一個強有力的locking down一個FTP服務器的手段。例如:cmds_allowed=PASV,RETR,QUIT  
默認值:無 

deny_file  
這可以設置一個文件名或者目錄名式樣以阻止在任何情況下訪問它們。並不是隱藏它們,而是拒絕任何試圖對它們進行的操作(下載,改變目錄層, 
和其他有影響的操作)。這個設置很簡單,而且不會用於嚴格的訪問控制-文件系統權限將優先生效。然而,這個設置對確定的虛擬用戶設置很有用。  
特別是如果一個文件能多個用戶名訪問的話(可能是通過軟連接或者硬連接),那就要拒絕所有的訪問名。  
建議你為使用文件系統權限設置一些重要的安全策略以獲取更高的安全性。如deny_file={*.mp3,*.mov,.private}  
默認值:無 

dsa_cert_file  
這個設置為SSL加密連接指定了DSA證書的位置。  
默認值:無(有一個RSA證書就夠了) 

email_password_file  
在設置了secure_email_list_enable后,這個設置可以用來提供一個備用文件。  
默認值:/etc/vsftpd.email_passwords 

ftp_username  
這是用來控制匿名FTP的用戶名。這個用戶的home目錄是匿名FTP區域的根。  
默認值:ftp 

ftpd_banner  
當一個連接首次接入時將現實一個歡迎界面。  
默認值:無(默認的界面會被顯示) 

guest_username  
參見相關設置guest_enable。這個設置設定了游客進入后,其將會被映射的名字。  
默認:ftp 

hide_file  
設置了一個文件名或者目錄名列表,這個列表內的資源會被隱藏,不管是否有隱藏屬性。但如果用戶知道了它的存在,  
將能夠對它進行完全的訪問。hide_file里的資源和符合hide_file指定的規則表達式的資源將被隱藏。vsftpd的  
規則表達式很簡單,例如hide_file={*.mp3,.hidden,hide*,h?}  
默認值:無 

listen_address  
如果vsftpd運行在獨立模式下,本地接口的默認監聽地址將被這個設置代替。  
需要提供一個數字化的地址。  
默認值:無 

listen_address6  
如果vsftpd運行在獨立模式下,要為IPV6指定一個監聽地址(如果listen_ipv6被啟用的話)。  
需要提供一個IPV6格式的地址。  
默認值:無 

local_root  
設置一個本地(非匿名)用戶登錄后,vsftpd試圖讓他進入到的一個目錄。如果失敗,則略過。  
默認值:無 

message_file  
當進入一個新目錄的時候,會查找這個文件並顯示文件里的內容給遠程用戶。dirmessage_enable需啟用。  
默認值:.message 

nopriv_user  
這是vsftpd做為完全無特權的用戶的名字。這是一個專門的用戶,比nobody更甚。用戶nobody往往用來在一些機器上做一些重要的事情。  
默認值:nobody 

pam_service_name  
設定vsftpd將要用到的PAM服務的名字。  
默認值:ftp 

pasv_address  
當使用PASV命令時,vsftpd會用這個地址進行反饋。需要提供一個數字化的IP地址。  
默認值:無(地址將取自進來(incoming)的連接的套接字) 

rsa_cert_file  
這個設置指定了SSL加密連接需要的RSA證書的位置。  
默認值:/usr/share/ssl/certs/vsftpd.pem 

secure_chroot_dir  
這個設置指定了一個空目錄,這個目錄不容許ftp user寫入。在vsftpd不希望文件系統被訪問時,目錄為安全的虛根所使用。  
默認值: /usr/share/empty 

ssl_ciphers  
這個設置將選擇vsftpd為加密的SSL連接所用的SSL密碼。詳細信息參見ciphers。  
默認值:DES-CBC3-SHA 

user_config_dir  
這個強大的設置容許覆蓋一些在手冊頁中指定的配置項(基於單個用戶的)。用法很簡單,最好結合范例。如果你把user_config_dir  
改為/etc/vsftpd_user_conf,那么以chris登錄,vsftpd將調用配置文件/etc/vsftpd_user_conf/chris。  
默認值:無 

user_sub_token  
這個設置將依據一個模板為每個虛擬用戶創建home目錄。例如,如果真實用戶的home目錄通過guest_username為/home/virtual/$USER 指定,  
並且user_sub_token設置為 $USER ,那么虛擬用戶fred登錄后將鎖定在/home/virtual/fred下。  
默認值:無 

userlist_file  
當userlist_enable被激活,系統將去這里調用文件。  
默認值:/etc/vsftpd.user_list 

vsftpd_log_file  
只有xferlog_enable被設置,而xferlog_std_format沒有被設置時,此項才生效。這是被生成的vsftpd格式的log文件的名字。  
dual_log_enable和這個設置不能同時啟用。如果你啟用了syslog_enable,那么這個文件不會生成,而只產生一個系統log.  
默認值:/var/log/vsftpd.log 

xferlog_file  
這個設置是設定生成wu-ftpd格式的log的文件名。只有啟用了xferlog_enable和xferlog_std_format后才能生效。  
但不能和dual_log_enable同時啟用。  
默認值:/var/log/xferlog

3、未完成的實驗 
his example should quickly show you the possibilites of per-IP configuration 
with vsftpd's tcp_wrappers integration. This is new with v1.1.3.

To use this, you need vsftpd built with tcp_wrappers! This is accomplished 
by editing "builddefs.h" and changing

#undef VSF_BUILD_TCPWRAPPERS 
to 
#define VSF_BUILD_TCPWRAPPERS

And then rebuild. If you are lucky your vendor will have shipped the vsftpd 
binary with this already done for you.

Next, to enable tcp_wrappers integration, you need this in your vsftpd.conf:

tcp_wrappers=YES

And you'll need a tcp_wrappers config file. An example one is supplied in this 
directory: hosts.allow. It lives at /etc/hosts.allow.

Let's have a look at the example:

vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf 
vsftpd: 192.168.1.4: DENY

The first line: 
If a client connects from 192.168.1.3, then vsftpd will apply the vsftpd 
config file /etc/vsftpd_tcp_wrap.conf to the session! These settings are 
applied ON TOP of the default vsftpd.conf. 
This is obviously very powerful. You might use this to apply different 
access restrictions for some IPs (e.g. the ability to upload). 
Or you could give certain classes of IPs the ability to skip connection 
limits (max_clients=0). 
Or you could increase / decrease the bandwidth limiter for certain classes 
of IPs. 
You get the point :-)

The second line: 
Denies the ability of 192.168.1.4 to connect. Very useful to take care of 
troublemakers. And now you don't need xinetd to do it - hurrah.


This example shows how you might set up virtual hosts. Virtual hosting is 
where different clients access your machine on different IP addresses (virtual 
IPs) and get redirected to different ftp sites.

For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2, 
you could have the two different IPs represent two totally different FTP sites.

For this example, we are going to build on the "INTERNET_SITE" example.

Step 1) Set up a virtual IP address.

ifconfig eth0:1 192.168.1.10 up 
(the standard IP address is 192.168.1.2) 
(note - this isn't quite complete, the route for local connects hasn't been 
added, but it will do for now)


Step 2) Create a user / location for the new virtual site.

useradd -d /var/ftp_site2 ftp_site2 
chown root.root /var/ftp_site2 
chmod a+rx /var/ftp_site2 
umask 022 
mkdir /var/ftp_site2/pub 
echo "test" > /var/ftp_site2/pub/content


Step 3) Modify the existing site to respond to the primary IP.

Edit /etc/xinetd.d/vsftpd, and add the config line: 
This example shows how you might set up virtual hosts. Virtual hosting is 
where different clients access your machine on different IP addresses (virtual 
IPs) and get redirected to different ftp sites.

For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2, 
you could have the two different IPs represent two totally different FTP sites.

For this example, we are going to build on the "INTERNET_SITE" example.

Step 1) Set up a virtual IP address.

ifconfig eth0:1 192.168.1.10 up 
(the standard IP address is 192.168.1.2) 
(note - this isn't quite complete, the route for local connects hasn't been 
added, but it will do for now)


Step 2) Create a user / location for the new virtual site.

useradd -d /var/ftp_site2 ftp_site2 
chown root.root /var/ftp_site2 
chmod a+rx /var/ftp_site2 
umask 022 
mkdir /var/ftp_site2/pub 
echo "test" > /var/ftp_site2/pub/content


Step 3) Modify the existing site to respond to the primary IP.

Edit /etc/xinetd.d/vsftpd, and add the config line:

bind = 192.168.1.2


Step 4) Create the new site, responding on the virtual IP.

cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2

Edit vsftpd2, and change 
- The bind line to refer to the IP address 192.168.1.10 
- Add the line 
server_args = /etc/vsftpd_site2.conf

This launches this FTP site with a different vsftpd configuration file.

cp /etc/vsftpd.conf /etc/vsftpd_site2.conf

Add two lines: 
ftp_username=ftp_site2 
ftpd_banner=This is the alternative FTP site.


Step 5) Restart xinetd and test!

/etc/rc.d/init.d/xinetd restart

[chris@localhost vsftpd]$ ftp 192.168.1.2 
Connected to 192.168.1.2 (192.168.1.2). 
220 ready, dude (vsFTPd 1.1.0: beat me, break me) 
Name (192.168.1.2:chris): [chris@localhost vsftpd]$ 
[chris@localhost vsftpd]$ ftp 192.168.1.2 
Connected to 192.168.1.2 (192.168.1.2). 
220 ready, dude (vsFTPd 1.1.0: beat me, break me) 
Name (192.168.1.2:chris): 
530 This FTP server is anonymous only. 
Login failed. 
ftp> quit 
221 Goodbye.

[chris@localhost vsftpd]$ ftp 192.168.1.10 
Connected to 192.168.1.10 (192.168.1.10). 
220 This is the alternative FTP site. 
Name (192.168.1.10:chris): 
530 This FTP server is anonymous only. 
Login failed. 
ftp>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM