FTP服務器是平時應用最爲普遍的服務之一。VSFTP是Very Secure FTP的縮寫,意指很是安全的FTP服務。VSFTP功能強大,經過結合本地系統的用戶認證模塊及其多功能的配置項目,能夠快速有效的搭建強大的多用戶FTP服務。
首先咱們考慮搭建FTP服務須要關注的都有哪些方面?好比咱們最常常關注的有:
一、如何添加FTP用戶?
二、如何臨時凍結某FTP用戶?
三、FTP用戶登入後的默認目錄?是否能夠改變?
四、如何鎖定FTP用戶可訪問的目錄範圍?
五、FTP用戶能夠有哪些訪問權限?能否上傳文件?
咱們將帶着這些問題來探討如何配置VSFTP以達到預約目標。
1、主要配置選項
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
如下爲經常使用的配置選項:
一、listen=YES
若設置爲YES,開啓監聽網絡。
二、anonymous_enable
若設置爲YES,則容許匿名用戶訪問;若設置爲NO則拒絕匿名用戶訪問。
若是開啓的話,則能夠經過用戶名ftp或者anonymous來訪問,密碼隨便。
三、local_enable
若設置爲YES,則容許經過本地用戶賬號訪問;若設置爲NO,則拒絕本地用戶賬號訪問。若是你拒絕了陌生人訪問,那麼這個必須設置爲YES吧,不然誰能訪問你的FTP呢?
四、write_enable
若設置爲YES,則開啓FTP全局的寫權限;若設置爲NO,則不開。
若爲NO則全部FTP用戶都沒法寫入,包括沒法新建、修改、刪除文件、目錄等操做,也就是說用戶都沒辦法上傳文件!!
五、anon_upload_enable
若設置爲YES,開啓匿名用戶的上傳權限。前提是write_enable有開啓,而且用戶具備對當前目錄的可寫權限。若設置爲NO,則關閉匿名用戶的上傳權限。
六、anon_mkdir_write_enable
若設置爲YES,開啓匿名用戶新建目錄的權限。前提是write_enable有開啓,而且用戶具備對當前目錄的可寫權限。若設置爲NO,則關閉匿名用戶新建目錄的權限。
七、dirmessage_enable
若設置爲YES,則可開啓目錄信息推送,也就是用戶登陸FTP後能夠列出當前目錄底下的文件、目錄。 這個應該要開啓吧!
八、xferlog_enable
若設置爲YES,則開啓登陸、上傳、下載等事件的日誌功能。應開啓!
九、xferlog_file=/var/log/vsftpd.log
指定默認的日誌文件,可指定爲其餘文件。
十、xferlog_std_format
若設置爲YES,則啓用標準的ftpd日誌格式。能夠不啓用。
十一、connect_from_port_20
若設置爲YES,則服務器的端口設爲20。
若是不想用端口20,能夠另外經過ftp_data_port來指定端口號。
十二、chown_uploads
若設置爲YES,則匿名用戶上傳文件後系統將自動修改文件的全部者。
若要開啓,則chown_username=whoever也需指定具體的某個用戶,用來做爲匿名用戶上傳文件後的全部者。
1三、idle_session_timeout=600
不活動用戶的超時時間,超過這個時間則中斷鏈接。
1四、data_connection_timeout=120
數據鏈接超時時間 。
1五、ftpd_banner=Welcome to blah FTP service.
FTP用戶登入時顯示的信息 。
1六、local_root=/home/ftp
指定一個目錄,用作在每一個本地系統用戶登陸後的默認目錄。
1七、anon_root=/home/ftp
指定一個目錄,用作匿名用戶登陸後的默認目錄。
1八、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文件就能夠賦予其訪問其餘目錄的權限!
1九、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這個用戶的。能夠修改這個文件而 不用擔憂影響到其餘用戶的配置。
2、個人VSFTP的配置方案
#首先要安裝VSFTP。源碼編譯或軟件包安裝均可以。
#如下方案實現如下功能:
#一、鎖定用戶在/home/ftp默認目錄活動,
# 並保留/etc/vsftpd.chroot_list文件裏面的用戶列表可訪問其餘目錄。
#二、具有暫時凍結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
3、回答前面提到的問題
一、如何添加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服務了。
二、如何臨時凍結某FTP用戶?
將userlist_enable與userlist_deny都設置爲YES。這樣userlist_file所指定的文件裏面的用戶列表裏面的用戶都 被拒絕訪問FTP。只需將某用戶賬號加入到userlist_file所指定文件裏面的用戶列表,就能夠起到暫時凍結該用戶的功能!如需從新開通使用權 限,則只需從該文件中去掉相應的用戶名。
三、FTP用戶登入後的默認目錄?是否能夠改變?
能夠經過local_root、anon_root來指定相應的默認目錄。
四、如何鎖定FTP用戶可訪問的目錄範圍?
將chroot_local_user與chroot_list_enable都設置爲YES。這樣就只有chroot_list_file所指定的文件 裏面的用戶列表能夠訪問默認目錄之外的目錄,而列表之外的用戶則被限定在各自的默認目錄活動!若是某些特定用戶須要訪問其餘目錄的權限,只需將其用戶名寫 入chroot_list_file文件就能夠賦予其訪問其餘目錄的權限!
五、FTP用戶能夠有哪些訪問權限?能否上傳文件?
設置write_enable能夠開啓全局的寫權限。這樣FTP用戶就能夠在本地賬號管理系統容許的範圍內進行寫操做了