FTP的縮寫,意指非常安全的FTP服務。VSFTP功能強大,通過結合本地系統的用戶認證模塊及其多功能的配置項目,可以快速有效的搭建強大的多用戶FTP服務。
首先我們考慮搭建FTP服務需要關註的都有哪些方面?比如我們最經常關註的有:
1、如何添加FTP用戶?
2、如何臨時凍結某FTP用戶?
3、FTP用戶登入後的默認目錄?是否可以改變?
4、如何鎖定FTP用戶可訪問的目錄範圍?
5、FTP用戶可以有哪些訪問權限?可否上傳文件?
我們將帶著這些問題來探討如何配置VSFTP以達到預定目標。
壹、主要配置選項
VSFTP的主配置文件是/etc/vsftpd.conf
。由於可配置的選項實在太多,無法壹壹詳談,只能截取比較常用的功能配置選項來加以說明。完整說明可參考man
vsftpd.conf。
這裏需要註意的是,每個配置選項都是由“配置項目名稱=配置值“所定義。在每個配置變量後,要緊跟等號,再緊跟設置的變量值。中間不允許出現空格之類的分隔符,否則導致配置錯誤,無法生效!
另外,如果需要開通上傳功能,則應註意用來登錄FTP的本地系統用戶對要操作的目錄需要具備寫權限,否則無法上傳文件!
版本vsftpd: version 2.0.6
啟動VSFTPD:sudo /etc/init.d/vsftpd start
停止VSFTPD:sudo /etc/init.d/vsftpd stop
重啟VSFTPD:sudo /etc/init.d/vsftpd restart
以下為常用的配置選項:
1、listen=YES
若設置為YES,開啟監聽網絡。
2、anonymous_enable
若設置為YES,則允許匿名用戶訪問;若設置為NO則拒絕匿名用戶訪問。
如果開啟的話,則可以通過用戶名ftp或者anonymous來訪問,密碼隨便。
3、local_enable
若設置為YES,則允許通過本地用戶帳號訪問;若設置為NO,則拒絕本地用戶帳號訪問。如果妳拒絕了陌生人訪問,那麽這個必須設置為YES吧,否則誰能訪問妳的FTP呢?
4、write_enable
若設置為YES,則開啟FTP全局的寫權限;若設置為NO,則不開。
若為NO則所有FTP用戶都無法寫入,包括無法新建、修改、刪除文件、目錄等操作,也就是說用戶都沒辦法上傳文件!!
5、anon_upload_enable
若設置為YES,開啟匿名用戶的上傳權限。前提是write_enable有開啟,並且用戶具有對當前目錄的可寫權限。
若設置為NO,則關閉匿名用戶的上傳權限。
6、anon_mkdir_write_enable
若設置為YES,開啟匿名用戶新建目錄的權限。前提是write_enable有開啟,並且用戶具有對當前目錄的可寫權限。
若設置為NO,則關閉匿名用戶新建目錄的權限。
7、dirmessage_enable
若設置為YES,則可開啟目錄信息推送,也就是用戶登錄FTP後可以列出當前目錄底下的文件、目錄。 這個應該要開啟吧!
8、xferlog_enable
若設置為YES,則開啟登錄、上傳、下載等事件的日誌功能。應開啟!
9、xferlog_file=/var/log/vsftpd.log
指定默認的日誌文件,可指定為其他文件。
10、xferlog_std_format
若設置為YES,則啟用標準的ftpd日誌格式。可以不啟用。
11、connect_from_port_20
若設置為YES,則服務器的端口設為20。
如果不想用端口20,可以另外通過ftp_data_port來指定端口號。
12、chown_uploads
若設置為YES,則匿名用戶上傳文件後系統將自動修改文件的所有者。
若要開啟,則chown_username=whoever也需指定具體的某個用戶,用來作為匿名用戶上傳文件後的所有者。
13、idle_session_timeout=600
不活動用戶的超時時間,超過這個時間則中斷連接。
14、data_connection_timeout=120
數據連接超時時間 。
15、ftpd_banner=Welcome to blah FTP
service.
FTP用戶登入時顯示的信息 。
16、local_root=/home/ftp
指定壹個目錄,用做在每個本地系統用戶登錄後的默認目錄。
17、anon_root=/home/ftp
指定壹個目錄,用做匿名用戶登錄後的默認目錄。
18、chroot_local_user、 chroot_list_enable、chroot_list_file
這個組合用於指示用戶可否切換到默認目錄以外的目錄。
其中,chroot_list_file默認是/etc/vsftpd.chroot_list,該文件定義壹個用戶列表。
若chroot_local_user
設置為NO,chroot_list_enable設置為NO,則所有用戶都是可以切換到默認目錄以外的。
若chroot_local_user
設置為YES,chroot_list_enable設置為NO,則鎖定FTP登錄用戶只能在其默認目錄活動,不允許切換到默認目錄以外。
若chroot_local_user
設置為YES,chroot_list_enable設置為YES,則chroot_list_file所指定的文件裏面的用戶列表都可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動。
若chroot_local_user設置為NO,chroot_list_enable設置為YES,則chroot_list_file所指定的文件裏面的用戶列表都被限定在各自的默認目錄活動,而列表以外的用戶則可以訪問默認目錄以外的目錄。
建議設置:chroot_local_user與chroot_list_enable都設置為YES。這樣就只有chroot_list_file所指定的文件裏面的用戶列表可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動!
好處:所有人都被限制在特定的目錄裏面。如果某些特定用戶需要訪問其他目錄的權限,只需將其用戶名寫入chroot_list_file文件就可以賦予其訪問其他目錄的權限!
19、userlist_file、userlist_enable、userlist_deny
這個組合用於指示用戶可否訪問FTP服務。
其中,userlist_file默認是/etc/vsftpd.user_list,該文件定義壹個用戶列表。
若userlist_enable設置為YES,userlist_deny設置為NO,則只有userlist_file所指定的文件裏面的用戶列表裏面的用戶可以訪問FTP。
若userlist_enable設置為YES,userlist_deny設置為YES,則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。
若userlist_enable設置為NO,userlist_deny設置為YES,則這個列表沒有實際用處,起不到限制的作用!因為所有用戶都可訪問FTP。
建議設置:userlist_enable與userlist_deny都設置為YES。這樣則userlist_file所指定的文件裏面的用戶列表裏面的用戶都被拒絕訪問FTP。
好處:只需將某用戶帳號加入到userlist_file所指定文件裏面的用戶列表,就可以起到暫時凍結該用戶的功能!
20、user_config_dir
指定壹個目錄用於存放針對每個用戶各自的配置文件,比如用戶kkk登錄後,會以該用戶名建立壹個對應的配置文件。
比如指定user_config_dir=/etc/vsftpd_user_conf,
則kkk登錄後會產生壹個/etc/vsftpd_user_conf/kkk的文件,這個文件保存的配置都是針對kkk這個用戶的。可以修改這個文件而
不用擔心影響到其他用戶的配置。
二、我的VSFTP的配置方案
#首先要安裝VSFTP。源碼編譯或軟件包安裝都可以。
#以下方案實現以下功能:
#1、鎖定用戶在/home/ftp默認目錄活動,
#
並保留/etc/vsftpd.chroot_list文件裏面的用戶列表可訪問其他目錄。
#2、具備暫時凍結FTP用戶的功能,將需暫停的用戶名加入到/etc/vsftpd.usr_list即可。
#
#設置配置文件:
#復制以下文件並保存為/etc/vsftpd.conf
#新建兩文件:touch /etc/vsftpd.chroot_list
#
touch /etc/vsftpd.user_list
#新建目錄:mkdir /home/ftp
#新建群組:addgroup ftp
#修改/home/ftp屬性:chown ftp:ftp /home/ftp
#新增FTP用戶: adduser --shell /bin/false --home /home/ftp
your_usr_name
#把需要開通FTP的用戶名加入到ftp群組:usermod -aG ftp your_usr_name
#註意:
#如果妳的/etc/shells裏面沒有包含/bin/false,則妳用上述的方法建立的用戶將法訪問#FTP,解決方法:編輯/etc/shells,加入/bin/false這行。
#
# Example config file /etc/vsftpd.conf
listen=YES
#listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP
service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
anon_root=/home/ftp
local_root=/home/ftp
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=YES
三、回答前面提到的問題
1、如何添加FTP用戶?
設置local_enable為YES可以開放系統用戶訪問FTP。
在系統裏面添加用戶,將shell設置為/bin/false,並將其家目錄若設置為/home/ftp或者其他目錄。這樣就可以建立只訪問FTP而無法登錄shell環境的用戶。
註意:可以新建壹個ftp組,把/home/ftp的所有者設為ftp,群組也設為ftp。然後所有新添加的FTP用戶只需加入到FTP群組就可以具有對/home/ftp的訪問權限了。這樣也方便管理用戶量比較大的FTP系統。如:
sudo addgroup ftp #如果有了就不用添加
sudo chown ftp:ftp /home/ftp #如果改過了就不用再改
sudo adduser --shell /bin/false --home /home/ftp user1
#添加用戶user1
sudo usermod -aG ftp
user1 #把用戶user1加入到ftp組
這樣便可以通過用戶名user1來訪問FTP服務了。
2、如何臨時凍結某FTP用戶?
將userlist_enable與userlist_deny都設置為YES。這樣userlist_file所指定的文件裏面的用戶列表裏面的用戶都
被拒絕訪問FTP。只需將某用戶帳號加入到userlist_file所指定文件裏面的用戶列表,就可以起到暫時凍結該用戶的功能!如需重新開通使用權
限,則只需從該文件中去掉相應的用戶名。
3、FTP用戶登入後的默認目錄?是否可以改變?
可以通過local_root、anon_root來指定相應的默認目錄。
4、如何鎖定FTP用戶可訪問的目錄範圍?
將chroot_local_user與chroot_list_enable都設置為YES。這樣就只有chroot_list_file所指定的文件
裏面的用戶列表可以訪問默認目錄以外的目錄,而列表以外的用戶則被限定在各自的默認目錄活動!如果某些特定用戶需要訪問其他目錄的權限,只需將其用戶名寫
入chroot_list_file文件就可以賦予其訪問其他目錄的權限!
5、FTP用戶可以有哪些訪問權限?可否上傳文件?
設置write_enable可以開啟全局的寫權限。這樣FTP用戶就可以在本地帳號管理系統允許的範圍內進行寫操作了