簡介
vsftpd是一個免費的開源的ftp服務器軟件;
特點
小巧輕快,安全易用,支持虛擬用戶、支持帶寬限制等功能;
安裝
執行 yum -y install vsftpd
創建虛擬用戶(注意權限問題(chmod),這個要根據情況來定)
- 選擇在根或用戶目錄下創建ftp文件夾:mkdir ftpfile,如:/ftpfile
- 添加匿名用戶:useradd ftpuser -d /ftpfile/ -s /sbin/nologin
- 修改ftpfile權限:chown -R ftpuser.ftpuser /ftpfile (-R 表示遍歷)
- 重設ftpuser密碼:passwd ftpuser
在 /ftpfile下創建index.html文件(歡迎頁)
配置
在 /etc/vsftpd 下創建chroot_list文件,再把新增的虛擬用戶添加到此配置文件中,后面要引用;
更改安全配置文件(/etc/selinux/config),修改為SELINUX=disabled? (匿名用戶可以創建目錄,防止出現550拒絕訪問錯誤)? ,執行setenforce 0 ,使之生效。
注意:如果驗證時出現550請執行:setsebool -P ftp_home_dir 1
下一步,重啟linux服務器,執行reboot命令
下面重點配置 /etc/vsftpd/vsftpd.conf ? :
?本項目要用到的配置項:
1)local_root=/ftpfile(當本地用戶登入時,將被更換到定義的目錄下,默認值為各用戶的家目錄)?
2)anon_root=/ftpfile(使用匿名登入時,所登入的目錄)?
3)use_localtime=YES(默認是GMT時間,改成使用本機系統時間)
4)anonymous_enable=NO(不允許匿名用戶登錄)
5)local_enable=YES(允許本地用戶登錄)
6)write_enable=YES(本地用戶可以在自己家目錄中進行讀寫操作)
7)local_umask=022(本地用戶新增檔案時的umask值)
8)dirmessage_enable=YES(如果啟動這個選項,那么使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟)
9)xferlog_enable=YES(是否啟用上傳/下載日志記錄。如果啟用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。)
10)connect_from_port_20=YES(指定FTP使用20端口進行數據傳輸,默認值為YES)
11)xferlog_std_format=YES(如果啟用,則日志文件將會寫成xferlog的標準格式)
12)ftpd_banner=Welcome to mmall FTP Server(這里用來定義歡迎話語的字符串)
13)chroot_local_user=NO(用于指定用戶列表文件中的用戶是否允許切換到上級目錄)
14)chroot_list_enable=YES(設置是否啟用chroot_list_file配置項指定的用戶列表文件)
15)chroot_list_file=/etc/vsftpd/chroot_list(用于指定用戶列表文件)
16)listen=YES(設置vsftpd服務器是否以standalone模式運行,以standalone模式運行是一種較好的方式,此時listen必須設置為YES,此為默認值。建議不要更改,有很多與服務器運行相關的配置命令,需要在此模式下才有效,若設置為NO,則vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制)
17)pam_service_name=vsftpd(虛擬用戶使用PAM認證方式,這里是設置PAM使用的名稱,默認即可,與/etc/pam.d/vsftpd對應) userlist_enable=YES(是否啟用vsftpd.user_list文件,黑名單,白名單都可以
18)pasv_min_port=61001(被動模式使用端口范圍最小值)
19)pasv_max_port=62000(被動模式使用端口范圍最大值)
20)pasv_enable=YES(pasv_enable=YES/NO(YES)
若設置為YES,則使用PASV工作模式;若設置為NO,則使用PORT模式。默認值為YES,即使用PASV工作模式。
?? FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
?? 一、PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。?
??當需要傳送數據時,客戶端在命令鏈路上用 PORT命令告訴服務器:“我打開了****端口,你過來連接我”。于是服務器從20端口向客戶端的****端口發送連接請求,建立一條數據鏈路來傳送數據。
?? 二、PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。?
??當需要傳送數據時,服務器在命令鏈路上用 PASV命令告訴客戶端:“我打開了****端口,你過來連接我”。于是客戶端向服務器的****端口發送連接請求,建立一條數據鏈路來傳送數據。?
??從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同。而FTP的復雜性就在于此。
?防火墻配置(如果是云服務器則不需要以下配置,云服務器(esc)沒有防火墻)
- 編輯 /etc/sysconfig/iptables? :
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --sport 61001:62000 -j ACCEPT
-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --sport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --sport 21 -j ACCEPT
將以上配置添加到防火墻配置中;
然后,重啟防火墻:service iptables restart
注意:
重啟防火墻出現Applying firewall rules: iptables-restore: line 17 failed,可能是因為配置文件iptables中的COMMIT沒有放在最后一行
第一次啟動vsftpd時Shutting down vsftpd是failed不用理會,只要保證Starting vsftpd是OK即代 表vsftpd服務成功。
?
打開瀏覽器訪問:ftp://ip地址 輸入賬號和密碼登陸;
vsftpd常用命令:service vsftpd restart/stop/start (重啟,關閉,啟動)
?