一、安裝
# 安裝vsftpd yum -y installvsftpd # 啓動 service vsftpdstart # 開機啓動 chkconfig vsftpdon
二、配置文件
2.1 vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd/user_list use_localtime=yes tcp_wrappers=YES local_root=/ftp chroot_list_enable=yes chroot_list_file=/etc/vsftpd/chroot_list ************************************分割線,各配置項說明***************************************** anonymous_enable=NO #禁止匿名用戶anonymous登錄,默認爲YES local_enable=YES #允許本地用戶登錄 write_enable=YES #讓登錄的用戶有寫權限(上傳,刪除) local_umask=022 #默認umask文件的權限掩碼 dirmessage_enable=YES #開啓目錄標語,默認是YES xferlog_enable=YES #開啓日誌,默認是YES connect_from_port_20=YES #指定FTP使用20端口進行數據傳輸,默認值爲YES。 xferlog_file=/var/log/vsftpd.log #設置日誌文件名和路徑,默認值爲/var/log/vsftpd.log。 xferlog_std_format=YES #如果啓用,則日誌文件將會寫成xferlog的標準格式 listen=YES #設置vsftpd服務器是否以standalone模式運行。 #若設置爲NO,則vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制。 # pam_service_name=vsftpd #PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證 userlist_enable=YES #是否藉助vsftpd的抵擋機制來處理某些不受歡迎的賬號,與下面的參數設置有關 userlist_deny=YES #當 userlist_enable=YES 時纔會生效的設定,若此設定值爲 YES 時,則當使用者賬號被列入到相應的文件時, #在該文件內的使用者將無法登入vsftpd服務器!該文件名與下面設置(userlist_file=/etc/vsftpd/user_list)有關。 #若設置爲YES,則/etc/vsftpd/user_list文件中的用戶不允許訪問FTP,若設置爲NO,則只有/etc/vsftpd/user_list文件中的用戶才能訪問FTP。 #/etc/vsftpd/ftpusers文件裏的用戶將禁止登錄ftp服務器,優先級高於user_list #詳細可參考 #http://yuanbin.blog.51cto.com/363003/108262/ #http://blog.chinaunix.net/uid-26495963-id-3538970.html userlist_file=/etc/vsftpd/user_list #控制用戶訪問FTP的文件,裏面寫着用戶名稱,一個用戶名稱一行; #若上面 userlist_deny=YES 時,則這個設置就有用處了!在這個文件內的賬號都無法使用 vsftpd ! use_localtime=yes #是否使用本地時間,vsftpd 預設使用 GMT 時間(格林威治),所以預設的 FTP #的日期會比中國晚 8 小時,建議修改設定爲 YES tcp_wrappers=YES #如果啓用,則vsftpd服務器會檢查/etc/hosts.allow 和/etc/hosts.deny #中的設置,來決定請求連接的主機,是否允許訪問該FTP服務器 local_root=/ftp #鎖定ftp訪問目錄(默認沒有此項) chroot_list_enable=yes #設置爲YES,即讓chroot_list文件裏的用戶列表有效。設置是否啓用chroot_list_file配置項指定的用戶列表文件。默認值爲NO。 chroot_list_file=/etc/vsftpd/chroot_list #需要手動建立chroot_list文件,用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到用戶家目錄的上級目錄。
2.2 ftpusers
此文件中的用戶禁止登錄ftp服務器
# Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
2.3 user_list
在該文件內的使用者將無法登入vsftpd服務。
關聯配置項:
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
# vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
2.4 chroot_list
將某些賬號的使用者 chroot 在他們的家目錄下.
關聯配置項:
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
test /ftp/test #用戶名 限制訪問的目錄
三、創建用戶
1.擁有讀寫權限 #mkdir /ftp #useradd -s /sbin/nologin -d /ftp -M admin # passwd admin Changing password for user admin. New UNIX password: BAD PASSWORD: it is too short Retype new UNIX password: passwd: all authentication tokens updated successfully. #chown admin:admin /ftp #chmod 755 /ftp 2.只擁有讀權限 #mkdir -p /ftp/test #useradd -s /sbin/nologin -d /ftp/test -M test # passwd test Changing password for user test. New UNIX password: BAD PASSWORD: it is too short Retype new UNIX password: passwd: all authentication tokens updated successfully. #chown test:admin /ftp/test #chmod 575 /ftp/test 3.限制用戶只訪問所指定的目錄,不能訪問其他路徑 啓用chroot_list_enable=YES,chroot_local_user=NO,chroot_list_file=/etc/vsftpd/chroot_list。 在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。 創建並編輯/etc/vsftpd/chroot_list文件,將受限制的用戶添加進去,每個用戶名一行 vim /etc/vsftpd/chroot_list 添加後如下: test /ftp/test 即test用戶不能切換到其他目錄,未添加到chroot_list文件中的admin用戶可以切換。 共分爲一下四種情況: ①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list文件中列出的用戶,可以切換到其他目錄;未在文件中列出的用戶,不能切換到其他目錄。 ②當chroot_list_enable=YES,chroot_local_user=NO(默認值)時,在/etc/vsftpd.chroot_list文件中列出的用戶,不能切換到其他目錄;未在文件中列出的用戶,可以切換到其他目錄。 ③當chroot_list_enable=NO,chroot_local_user=YES時,所有的用戶均不能切換到其他目錄。 ④當chroot_list_enable=NO,chroot_local_user=NO時,所有的用戶均可以切換到其他目錄。 chroot_local_user=YES/NO(NO) 用於指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值爲NO。
四、測試
1.使用admin用戶列出目錄
# curl ftp://10.10.60.197 -u admin:admin -s -rw-r--r-- 1 503 504 0 Nov 12 01:53 123 dr-xrwxr-x 2 501 504 4096 Nov 12 02:04 ctrip dr-xrwxr-x 2 502 504 4096 Nov 12 02:05 test # curl ftp://10.10.60.197/test/ -u admin:admin -s -rw-r--r-- 1 503 504 0 Nov 12 02:05 123 -rw-r--r-- 1 0 0 0 Nov 12 01:22 test.file
(注意test後有斜線,否則會返回"curl: (19) RETR response: 550) [root@server ftp]# curl ftp://10.10.60.197/test -u test1:test1 curl: (19) RETR response: 550 [root@server ftp]# [root@server ftp]# curl ftp://10.10.60.197/test/ -u test1:test1 -rw-r--r-- 1 503 504 0 Nov 12 02:04 123 -r-xrwxr-x 1 501 504 339 Nov 12 01:02 test.file -rw-r--r-- 1 504 504 556 Nov 12 04:25 test.sh -rw-r--r-- 1 501 504 5865 Nov 02 23:42 test.txt
2.測試上傳與下載
客戶端上傳 [root@client ~]# echo "123" > 123 [root@client ~]# 使用admin賬戶傳到test ftp目錄下 [root@client ~]# curl ftp://10.10.60.197/test/ -u admin:admin -T 123 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 4 0 0 100 4 0 10 --:--:-- --:--:-- --:--:-- 11 使用admin賬戶傳到其ftp目錄下 [root@client ~]# curl ftp://10.10.60.197 -u admin:admin -T 123 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 4 0 0 100 4 0 11 --:--:-- --:--:-- --:--:-- 12 服務器端查看 [root@server ~]# cd /ftp/ [root@server ftp]# pwd /ftp [root@server ftp]# ll total 12 -rw-r--r-- 1 admin admin 4 Nov 12 03:33 123 dr-xrwxr-x 2 test admin 4096 Nov 12 03:29 test [root@server ftp]# [root@server ftp]# cat 123 123 [root@server ftp]# [root@server ftp]# cat test/123 123