1)安裝vsftpd
sudo apt-get install vsftpd
2)設置 vsftpd.conf文件
注意:設置之前請備份!!
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
.1.1、監聽地址與控制端口
listen_address=ip address
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了在主機的哪個IP地址上監聽FTP請求,即在哪個IP地址上提供FTP服務。對于只有一個IP地址的主機,不需要使用此參數。對于多址主機,不設置此參數,則監聽所有IP地址。默認值為無。
listen_port=port_value
指定FTP服務器監聽的端口號(控制端口),默認值為21。此選項在standalone模式下生效。
5.1.2、FTP模式與數據端口
port_enable=YES|NO
如果你要在數據連接時取消PORT模式時,設此選項為NO。默認值為YES。
connetc_from_port_20=YES|NO
控制以PORT模式進行數據傳輸時是否使用20端口(ftp-data)。YES使用,NO不使用。默認值為NO,但RHL自帶的vsftpd.conf文件中此參數設為YES。
ftp_data_port=port number
設定ftp數據傳輸端口(ftp-data)值。默認值為20。此參數用于PORT FTP模式。
port_promiscuous=YES|NO
默認值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的數據只能連接到客戶端上。小心打開此選項。
pasv_enable=YES|NO
YES,允許數據傳輸時使用PASV模式。NO,不允許使用PASV模式。默認值為YES。
pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,建立數據傳輸所可以使用port范圍的下界和上界,0表示任意。默認值為0。把端口范圍設在比較高的一段范圍內,比如50000-60000,將有助于安全性的提高。
pasv_promiscuous=YES|NO
此選項激活時,將關閉PASV模式的安全檢查。該檢查確保數據連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在于由安全隧道方案構成的組織中。默認值為NO。
pasv_address=
此選項為一個數字IP地址,作為PASV命令的響應。默認值為none,即地址是從呼入的連接套接字(incoming connectdsocket)中獲取。
5.2.2 負載控制
max_clients=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了FTP服務器最大的并發連接數,當超過此連接數時,服務器拒絕客戶端連接。默認值為0,表示不限最大連接數。
max_per_ip=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義每個IP地址最大的并發連接數目。超過這個數目將會拒絕連接。此選項的設置將影響到象網際快車這類的多進程下載軟件。默認值為0,表示不限制。
anon_max_rate=value
設定匿名用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。
local_max_rate=value
設定用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。此選項對所有的用戶都生效。此外,也可以在用戶個人配置文件中使用此選項,以指定特定用戶可獲得的最大數據傳輸速率。
步驟如下:
①在vsftpd.conf中指定用戶個人配置文件所在的目錄,如:
user_config_dir=/etc/vsftpd/userconf
②生成/etc/vsftpd/userconf目錄。
③用戶個人配置文件是在該目錄下,與特定用戶同名的文件,如:
/etc/vsftpd/userconf/xiaowang
④在用戶的個人配置文件中設置local_max_rate參數,如:
local_max_rate=80000
以上步驟設定FTP用戶xiaowang的最大數據傳輸速度為80KBytes/s。
VSFTPD對于速度控制的變化范圍大概在80%到120%之間。比如我們限制最高速度為100KBytes/s,但實際的速度可能在80KBytes/s到120KBytes/s 之間。當然,若是線路帶寬不足時,速率自然會低于此限制。
5.3 用戶選項
VSFTPD的用戶分為三類:匿名用戶、本地用戶(local user)以及虛擬用戶(guest)。
5.3.1、匿名用戶
anonymous_enable=YES|NO
控制是否允許匿名用戶登錄,YES允許,NO不允許,默認值為YES。
ftp_username=
匿名用戶所使用的系統用戶名。默認下,此參數在配置文件中不出現,值為ftp。
no_anon_password=YES|NO
控制匿名用戶登入時是否需要密碼,YES不需要,NO需要。默認值為NO。
deny_email_enable=YES|NO
此參數默認值為NO。當值為YES時,拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登錄的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登錄時,被拒絕。顯然,這對于阻擊某些Dos攻擊有效。當此參數生效時,需追加banned_email_file參數
banned_email_file=/etc/vsftpd.banned_emails
指定包含被拒絕的e-mail地址的文件,默認文件為/etc/vsftpd.banned_emails。
anon_root=
設定匿名用戶的根目錄,即匿名用戶登入后,被定位到此目錄下。主配置文件中默認無此項,默認值為/var/ftp/。
anon_world_readable_only=YES|NO
控制是否只允許匿名用戶下載可閱讀文檔。YES,只允許匿名用戶下載可閱讀的文件。NO,允許匿名用戶瀏覽整個服務器的文件系統。默認值為YES。
anon_upload_enable=YES|NO
控制是否允許匿名用戶上傳文件,YES允許,NO不允許,默認是不設值,即為NO。除了這個參數外,匿名用戶要能上傳文件,還需要兩個條件:一,write_enable參數為YES;二,在文件系統上,FTP匿名用戶對某個目錄有寫權限。
anon_mkdir_write_enable=YES|NO
控制是否允許匿名用戶創建新目錄,YES允許,NO不允許,默認是不設值,即為NO。當然在文件系統上,FTP匿名用戶必需對新目錄的上層目錄擁有寫權限。
anon_other_write_enable=YES|NO
控制匿名用戶是否擁有除了上傳和新建目錄之外的其他權限,如刪除、更名等。YES擁有,NO不擁有,默認值為NO。
chown_uploads=YES|NO
是否修改匿名用戶所上傳文件的所有權。YES,匿名用戶所上傳的文件的所有權將改為另外一個不同的用戶所有,用戶由chown_username參數指定。此選項默認值為NO。
chown_username=whoever
指定擁有匿名用戶上傳文件所有權的用戶。此參數與chown_uploads聯用。不推薦使用root用戶。
5.3.2、本地用戶
在使用FTP服務的用戶中,除了匿名用戶外,還有一類在FTP服務器所屬主機上擁有賬號的用戶。VSFTPD中稱此類用戶為本地用戶(localusers),等同于其他FTP服務器中的real用戶
local_enable=YES|NO
控制vsftpd所在的系統的用戶是否可以登錄vsftpd。默認值為YES。
local_root=
定義所有本地用戶的根目錄。當本地用戶登入時,將被更換到此目錄下。默認值為無。
user_config_dir=
定義用戶個人配置文件所在的目錄。用戶的個人配置文件為該目錄下的同名文件。個人配置文件的格式與vsftpd.conf格式相同。例如定義user_config_dir=/etc/vsftpd/userconf,并且主機上有用戶xiaowang,lisi,那我們可以在user_config_dir的目錄新增名為xiaowang、lisi的兩個文件。當用戶lisi登入時,VSFTPD則會讀取user_config_dir下lisi這個文件中的設定值,應用于用戶lisi。默認值為無。
5.3.3、虛擬用戶
guest_enable=YES|NO
若是啟動這項功能,所有的非匿名登入者都視為guest。默認值為關閉。
guest_username=
定義VSFTPD的guest用戶在系統中的用戶名。默認值為ftp。
5.4、安全措施
5.4.1、用戶登錄控制
pam_service_name=vsftpd
指出VSFTPD進行PAM認證時所使用的PAM配置文件名,默認值是vsftpd,默認PAM配置文件是/etc/pam.d/vsftpd。
/etc/vsftpd.ftpusers
VSFTPD禁止列在此文件中的用戶登錄FTP服務器。這個機制是在/etc/pam.d/vsftpd中默認設置的。
userlist_enable=YES|NO
此選項被激活后,VSFTPD將讀取userlist_file參數所指定的文件中的用戶列表。當列表中的用戶登錄FTP服務器時,該用戶在提示輸入密碼之前就被禁止了。即該用戶名輸入后,VSFTPD查到該用戶名在列表,VSFTPD就直接禁止掉該用戶,不會再進行詢問密碼等后續步聚。默認值為NO。
userlist_file=/etc/vsftpd.user_list
指出userlist_enable選項生效后,被讀取的包含用戶列表的文件。默認值是/etc/vsftpd.user_list。
userlist_deny=YES|NO
決定禁止還是只允許由userlist_file指定文件中的用戶登錄FTP服務器。此選項在userlist_enable選項啟動后才生效。YES,默認值,禁止文件中的用戶登錄,同時也不向這些用戶發出輸入口令的提示。NO,只允許在文件中的用戶登錄FTP服務器。
tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers遠程訪問控制機制,默認值為YES。
5.4.2、目錄訪問控制
chroot_list_enable=YES|NO
鎖定某些用戶在自家目錄中。即當這些用戶登錄后,不可以轉到系統的其他目錄,只能在自家目錄(及其子目錄)下。具體的用戶在chroot_list_file參數所指定的文件中列出。默認值為NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被鎖定在自家目錄中的用戶的列表文件。文件格式為一行一用戶。通常該文件是/etc/vsftpd/chroot_list。此選項默認不設置。
chroot_local_users=YES|NO
將本地用戶鎖定在自家目錄中。當此項被激活時,chroot_list_enable和chroot_local_users參數的作用將發生變化,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄。本參數被激活后,可能帶來安全上的沖突,特別是當用戶擁有上傳、shell訪問等權限時。因此,只有在確實了解的情況下,才可以打開此參數。默認值為NO。
passwd_chroot_enable
當此選項激活時,與chroot_local_user選項配合,chroot()容器的位置可以在每個用戶的基礎上指定。每個用戶的容器來源于/etc/passwd中每個用戶的自家目錄字段。默認值為NO。
5.4.3、文件好作控制
hide_ids=YES|NO
是否隱藏文件的所有者和組信息。YES,當用戶使用"ls-al"之類的指令時,在目錄列表中所有文件的擁有者和組信息都顯示為ftp。默認值為NO。
ls_recurse_enable=YES|NO
YES,允許使用"ls -R" 指令。這個選項有一個小的安全風險,因為在一個大型FTP站點的根目錄下使用"ls-R"會消耗大量系統資源。默認值為NO。
write_enable=YES|NO
控制是否允許使用任何可以修改文件系統的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE以及SITE。默認值為NO,不過自帶的簡單配置文件中打開了該選項。
secure_chroot_dir=
這選項指向一個空目錄,并且ftp用戶對此目錄無寫權限。當vsftpd不需要訪問文件系統時,這個目錄將被作為一個安全的容器,用戶將被限制在此目錄中。默認目錄為/usr/share/empty。
5.4.4、新增文件權限設定
anon_umask=
匿名用戶新增文件的umask 數值。默認值為077。
file_open_mode=
上傳檔案的權限,與chmod 所使用的數值相同。如果希望上傳的文件可以執行,設此值為0777。默認值為0666。
local_umask=
本地用戶新增檔案時的umask數值。默認值為077。不過,其他大多數的FTP服務器都是使用022。如果您的用戶希望的話,可以修改為022。在自帶的配置文件中此項就設為了022。
5.5、提示信息
ftpd_banner=login banner string
此參數定義了login bannerstring(登錄歡迎語字符串)。用戶可以自行修改。預設值為無。當ftpd_banner設置后,將取代系統原來的歡迎詞。
banner_file=/directory/vsftpd_banner_file
此項指定一個文本文件,當使用者登入時,會顯示此該文件的內容,通常為歡迎話語或是說明。默認值為無。與ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file選項將取代ftpd_banner選項。
dirmessage_enable=YES|MO
控制是否啟用目錄提示信息功能。YES啟用,NO不啟用,默認值為YES。此功能啟用后,當用戶進入某一個目錄時,會檢查該目錄下是否有message_file選項所指定的文檔,若是有,則會出現此文檔的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。
message_file=
此選項,僅在dirmessage_enable選項激活方生效。默認值為.message。
5.6、好志設置
xferlog_enable=YES|NO
控制是否啟用一個好志文件,用于詳細記錄上傳和下載。該好志文件由xferlog_file選項指定。默認值為NO,但簡單配置文件中激活此選項。
xferlog_file=
這個選項設定記錄傳輸好志的文件名。默認值為/var/log/vsftpd.log。
xferlog_std_format=YES|NO
控制好志文件是否使用xferlog的標準格式,如同wu-ftpd一樣。使用xferlog格式,可以重新使用已經存在的傳輸統計生成器。然而,默認的好志格式更為可讀性。默認值為NO,但自帶的配置文件中激活了此選項。
log_ftp_protocol=YES|NO
當此選項激活后,所有的FTP請求和響應都被記錄到好志中。提供此選項時,xferlog_std_format不能被激活。這個選項有助于調試。默認值為NO。
5.7、其他設置
setproctitle_enable=YES|NO
YES,VSFTPD將在系統進程列表中顯示每個會話(session)的狀態。也就是說,進程報告將顯示每個vsftpd會話在做什么(掛起、下載等),如用ps-ef|grepftp。出于安全的目的,可以考慮將此選項關閉。NO,進程報告只顯示一個vsftpd進程在運行。默認值為NO。
text_userdb_names=YES|No
當使用者登入后使用ls -al之類指令時,目錄列表的用戶和組信息域,默認是出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。默認值為NO。
user_localtime=YES|NO
默認為NO。YES,VSFTPD顯示目錄列表時使用你本地時區的時間。默認是顯示GMT時間。同樣,由ftp命令“MDTM”返回的時間值也受此選項影響。
check_shell=YES|NO
此選項僅對不使用PAM方式的VSFTPD生效。當此選項關閉后,當本地用戶登錄時,VSFTPD不會檢查/etc/shells文件以尋找一個有效的用戶shell。默認為YES。
nopriv_user=
指定一個用戶,當VSFTPD不想要什么權限時,使用此用戶身份。這用戶最好是一個專用的用戶,而不是用戶nobody。在大多數的機器上,nobody用戶被用于大量重要的事情。默認值為nobody。
pam_service_name=
指明VSFTPD使用用PAM驗證服務時的PAM配置文件名。默認值為ftp。
?
6、VSFTPD應用
本部分介紹VSFTPD的具體應用方法。
6.1、允許匿名用戶上傳文件?
在vsftpd.conf文件中修改或增加以下選項:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
然后創建供匿名用戶上傳文件的目錄,并設定權限:
# mkdir /var/ftp/incoming
# chmod o+w /var/ftp/incoming
由于匿名用戶(ftp)上傳文件,需要對incoming目錄進行好作,而incoming為root所有,匿名用戶(ftp)對于incoming來說是其他用戶,所以要加入其他用戶(o)的寫權限。
6.2、限制用戶在自家目錄
在默認配置中,本地用戶可以切換到自家目錄以外的目錄進行瀏覽,并在權限范圍內進行上傳和下載,這無疑是個不安全因素。
我們可以設置chroot,讓本地用戶登錄后只能訪問自家目錄,無法訪問其他目錄。相關的選項有三個:chroot_local_user、chroot_list_enable、chroot_list_file。限制用戶在自家目錄有兩種做法:
1、限制所有的本地用戶在自家目錄
chroot_local_user=YES
這種做法,可能會帶來一些安全性上的沖突。參見前面的chroot_local_user選項描述。
2、限制部分本地用戶在自家目錄
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中加入要限制的本地用戶名。注意一個用戶名一行。
6.3、配置高安全級別的匿名FTP服務器
VSFTPD自帶的簡單配置文件已經自稱是偏執狂了,這里看看能否更加偏執一些,。有些選項默認已經采用安全性的設置,這里就不再寫出了。
#只允許匿名訪問,不允許本地用戶訪問
anonymous_enable=YES
local_enable=NO
#使用ftpd_banner取代VSFTPD默認的歡迎詞,免得泄漏相關信息
ftpd_banner=Welcome to this FTP Server
#只讓匿名用戶瀏覽可閱讀的文件,不可以瀏覽整個系統
anon_world_readable_only=YES
#隱藏文件的所有者和組信息,匿名用戶看到的文件的所有者和組全變為ftp
hide_ids=YES
#取消寫權限
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#使用單獨模式,并指定監聽的IP地址
listen_address=ip address
#對連接進行控制,還有超時時間,那就根據具體情況再說了。
connect_from_port_20=YES
pasv_min_port=50000
pasv_max_port=60000
#控制并發數,限定每個IP地址的并發數,這個嘛,根據用戶自已定了。
max_clients=numerical value
max_per_ip=numerical value
#限定下載速度,具體限多大,就由用戶自己定了,80KB/s,也很快了吧。
anon_max_rate=80000
#啟用詳細的好志記錄格式
xferlog_enable=YES
6.4、基于IP地址的虛擬FTP服務器
假定服務器有兩個IP地址,192.168.0.1和192.168.0.2。VSFTPD是建立在192.168.0.1上的,現在我們在192.168.0.2上再提供一個虛擬FTP服務器。如何在一臺服務器上使用多個IP地址,請參考相關文檔。
1、創建虛擬FTP服務器的根目錄。
mkdir -p /var/ftp2/pub
確保/var/ftp2和/var/ftp2/pub目錄的擁有者和組均為root,掩碼為755。
2、增加虛擬FTP服務器的匿名用戶帳號。原先的FTP服務器使用系統用戶ftp作為其匿名用戶帳號。我們要增加一個ftp2用于虛擬FTP服務器。
useradd -d /var/ftp2 -M ftp2
3、創建虛擬FTP服務器的配置文件。復制原來的vsftpd.conf作為虛擬FTP服務器的配置文件,并修改相關參數。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf
新添或修改以下參數:
listen=YES
listen_address=192.168.0.2
ftp_username=ftp2
注:由于VSFTPD默認是監聽所有的IP地址,當我們設定基于IP的虛擬FTP服務器時,為防止原來的FTP服務器與虛擬FTP服務器發生監聽上的沖突,原FTP服務器需要指定監聽的IP地址。在這里,原來的配置文件中就要設置listen_address=192.168.0.1。
4、啟動虛擬FTP服務器。
/etc/rc.d/init.d/vsftpd腳本在啟動時,掃描/etc/vsftpd/目錄下所有的*.conf文件,按照*.conf文件的先后,依次啟用vsftpd進程,每個vsftpd進程對應一個.conf文件。即,“ls/etc/vsftpd/”列表的次序與“ps -aux |grep vsftpd”中的順序一樣。當然了,“ps -aux | grepvsftpd”中也顯示出vsftpd所使用的配置文件,從中也可以看哪個vsftpd進程對應哪個FTP服務器。如果沒有列出配置文件,那就是默認的vsftpd.conf,那么該進程也就是原來的FTP服務器進程。
由于第3步中虛擬FTP服務器的配置文件被命名為vsftpd2.conf文件,所以我們可以用/etc/rc.d/init.d/vsftpd腳本同時啟動或關閉原FTP服務器和新加的虛擬FTP服務器。
以下命令單獨啟動虛擬FTP服務器:
/usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
單獨關閉虛擬FTP服務器,用“ps -aux | grepvsftpd”查出進程號,再用kill指令殺死虛擬FTP的進程。
?6.4、基于IP地址的虛擬FTP服務器?
假定服務器有兩個IP地址,192.168.0.1和192.168.0.2。VSFTPD是建立在192.168.0.1上的,現在我
們在192.168.0.2上再提供一個虛擬FTP服務器。如何在一臺服務器上使用多個IP 地址,請參考相關文檔
。?
1、創建虛擬FTP服務器的根目錄。?
mkdir -p /var/ftp2/pub?
確保/var/ftp2和/var/ftp2/pub目錄的擁有者和組均為root,掩碼為755。?
2、增加虛擬FTP服務器的匿名用戶帳號。原先的FTP服務器使用系統用戶ftp作為其匿名用戶帳號。我
們要增加一個ftp2用于虛擬FTP服務器。?
useradd -d /var/ftp2 -M ftp2?
3、創建虛擬FTP服務器的配置文件。復制原來的vsftpd.conf作為虛擬FTP服務器的配置文件,并修改
相關參數。?
cp /etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd2.conf?
新添或修改以下參數:?
listen=YES?
listen_address=192.168.0.2?
ftp_username=ftp2?
注:由于VSFTPD默認是監聽所有的IP地址,當我們設定基于IP的虛擬FTP服務器時,為防止原來的FTP
服務器與虛擬FTP服務器發生監聽上的沖突,原FTP服務器需要指定監聽的IP地址。在這里,原來的配置文
件中就要設置listen_address=192.168.0.1。?
4、啟動虛擬FTP服務器。?
/etc/rc.d/init.d/vsftpd腳本在啟動時,掃描/etc/vsftpd/目錄下所有的*.conf文件,按照*.conf
文件的先后,依次啟用vsftpd進程,每個vsftpd進程對應一個.conf文件。即,“ls/etc/vsftpd/”列表
的次序與“ps -aux |grep vsftpd”中的順序一樣。當然了,“ps -aux | grepvsftpd”中也顯示出
vsftpd所使用的配置文件,從中也可以看哪個vsftpd進程對應哪個FTP服務器。如果沒有列出配置文件,
那就是默認的vsftpd.conf,那么該進程也就是原來的FTP服務器進程。?
由于第3步中虛擬FTP服務器的配置文件被命名為vsftpd2.conf文件,所以我們可以
用/etc/rc.d/init.d/vsftpd腳本同時啟動或關閉原FTP服務器和新加的虛擬FTP服務器。?
以下命令單獨啟動虛擬FTP服務器:?
/usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf&?
單獨關閉虛擬FTP服務器,用“ps -aux | grep vsftpd”查出進程號,再用kill指令殺死虛擬FTP的
進程。?
5.1.3 ASCII模式
默認情況下,VSFTPD是禁止使用ASCII傳輸模式。即使FTP客戶端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在實際傳輸文件時,還是使用二進制方式。下面選項控制VSFTPD是否使用ASCII傳輸模式。
ascii_upload_enable=YES|NO
控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認為NO。
ascii_download_enable=YES|NO
控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認為NO。
5.2、性能與負載控制
5.2.1、超時選項
idle_session_timeout=
空閑(發呆)用戶會話的超時時間,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線。單位為秒,默認值為300。
data_connection_timeout=
空閑的數據連接的超時時間。默認值為300 秒。
accept_timeout=numerical value
接受建立聯機的超時設定,單位為秒。默認值為60。
connect_timeout=numerical value
響應PORT方式的數據聯機的超時設定,單位為秒。默認值為60。以上兩個選項針對客戶端的,將使客戶端空閑1分鐘后
自動
中斷連接,并在中斷1分鐘后
自動
激活連接。
?
6.5、虛擬用戶的配置?
6.5.1、VSFTPD的虛擬用戶介紹?
VSFTPD的虛擬用戶則是FTP服務的專用用戶,虛擬用戶只能訪問FTP服務器資源。
VSFTPD的虛擬用戶采用單獨的用戶名/口令保存方式,與系統賬號(passwd/shadow)分離,這大大增
強了系統的安全性。由于虛擬用戶的用戶名/口令被單獨
保存,因此在驗證時,VSFTPD需要用一個系統用戶的身份來讀取數據庫文件或數據庫服務器以完成驗證,
這就是guest用戶,這正如同匿名用戶也需要有一個系統用戶ftp一樣。當然,guest用戶也可以被認為是
用于映射虛擬用戶。在后面的例子中,假定存在虛擬用戶xiaotong和xiaowang。?
6.5.2 用戶創建和目錄設置?
在系統中添加vsftpdguest用戶,作為虛擬用戶在系統中的代表。?
useradd vsftpdguest?
建立一個虛擬用戶
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
當虛擬用戶登錄后,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬用戶登
錄到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。
??由于要按照虛擬用戶模式登陸,安裝db4.2-util包

建立一個login文件,里面包含虛擬用戶信息,比如
------------------------------------------
test1??????????????用戶名
passwd1???????密碼
test2??????????????用戶名
passwd2????????
密碼??
?
這里注意要最后一行要回車
-------------------------------------------
?
?建立數據庫文件

更改數據庫文件的權限

生成新的PAM文件新建/etc/pam.d/vsftpd.vu 內容如下:


6.5.3、配置文件的設置?
6.5.3.1、基本設置。?
在vsftpd.conf配置文件中,加入以下參數:?
guest_enable=YES?
guest_username=vsftpdguest?
6.5.3.2、虛擬用戶的權限配置。?
在VSFTPD-1.2.0中當virtual_use_local_privs=YES時,只需write_enable=YES,虛擬用戶就可以就
擁有寫權限。?
?6.5.3.3、虛擬用戶的其他配置?
①限定虛擬用戶在自家目錄。?
chroot_local_user=NO?
chroot_list_enable=YES?
chroot_list_file=/etc/vsftpd.chroot_list?
在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。?
或者,chroot_local_user=YES?
②虛擬用戶的個人配置。?
如果想讓個別的虛擬用戶擁有自己特別的配置,同樣可以建立虛擬用戶的個人配置文件。在主配置文
件中加入:?
user_config_dir=/etc/vsftpd/vsftpd_user_conf?
特別注意:筆者在配置過程中出來user_config_dir無效的情況,筆者設為/etc/vsftpd/userconf無效,
而/etc/vsftpd/userconf確實存在,而且下面的相應的用戶文件也存在。后來在etc目錄下建立一個任意取了個名字的目錄,將2個文件拷入,將
user_config_dir設為這個任意建立的目錄
,
成功。可能因為筆者的guest_username名為vsftpd的原因吧。
生成/etc/vsftpd/vsftpd_user_conf目錄,在該目錄下建立與特定虛擬用戶同名的文件:?
[root@hpe45 vsftpd]# mkdirvsftpd_user_conf?
[root@hpe45 vsftpd]# cd vsftpd_user_conf?
[root@hpe45 vsftpd_user_conf]# touchxiaowang?
然后在xiaowang文件中就可以加入專對xiaowang生效的選項設置了。?
注:如果在個人配置文件中加入chroot_local_user=YES是無效的。?
6.5.3.4、虛擬用戶個人目錄設置?
大家可以發現,無論是哪個虛擬用戶,登錄后所在的目錄都是/home/vsftpdguest,即都是
guest_username用戶的自家目錄。下面,介紹如何為每個虛擬用戶建立自家目錄。?
一種作法是在虛擬用戶的個人配置文件中使用local_root選項指定虛擬用戶的自家目錄。以xiaowang
為例,在第上步的基礎上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:?
local_root=/home/xiaowang?
新建xiaowang目錄,并將權限設為vsftpdguest:?
[root@hpe45 home]# mkdir xiaowang?
[root@hpe45 home]# chown vsftpdguest.vsftpdguest./xiaowang?
?好了,重啟下ftp 服務器:
/
etc
/
init.d
/
vsftpd restart
最后注意一點,使用CUTEFTP的要注意,登錄時要選擇標準FTP方式,不是SFTP方式,這樣才能測試
|
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
