vsftpd 安裝配置詳細教程
linux下ftp軟件不少,大致特點:
wu-ftp:比較老牌,但針對它的攻擊比較多,設置比較麻煩,但功能比較強大。
ProFTPD:能實現wu-ftp以及server-U的所有功能。安全性也較高,但比起vsftpd配置稍顯復雜。
vsftpd:功能強大,配置也比較簡單
選vsftpd是因為它安全、速度快。
選ProFTPD偶爾看到webmin支持他,所以就用了,因為方便。
選Serv-U理由windows普遍,Serv-U方便,但最大問題是盜版,所以現在不大用了。
一、安裝
# yum install vsftpd
二、安裝db4包,使能db_load
# yum install db4.i386
# yum install db4-utils.i386
三、vsftpd文件說明
/etc/vsftpd/vsftpd.conf 主配置文件
/usr/sbin/vsftpd Vsftpd的主程序
/etc/rc.d/init.d/vsftpd 啟動腳本
/etc/pam.d/vsftpd PAM認證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問的用戶來自/etc/vsftpd/ftpusers文件中的用戶)
/etc/vsftpd/ftpusers 禁止使用vsftpd的用戶列表文件。記錄不允許訪問FTP服務器的用戶名單,管理員可以把一些對系統安全有威脅的用戶賬號記錄在此文件中,以免用戶從FTP登錄後獲得大於上傳下載操作的權利,而對系統造成損壞。(註意:linux-4中此文件在/etc/目錄下)
/etc/vsftpd/user_list 禁止或允許使用vsftpd的用戶列表文件。這個文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設置userlist_deny=YES)下也不能訪問FTP服務器,在設置了userlist_deny=NO時,僅允許user_list中指定的用戶訪問FTP服務器。(註意:linux-4中此文件在/etc/目錄下)
/var/ftp 匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄後進入自己家目錄
/var/ftp/pub 匿名用戶的下載目錄,此目錄需賦權根chmod 1777 pub(1為特殊權限,使上載後無法刪除)
/etc/logrotate.d/vsftpd.log 日誌文件
四、關閉防火墻
# service iptables stop
五、關閉SELinux
方法有多個
1、暫時關閉(不需要重啟)
# setenforce 0 (關閉)
# setenforce 1 (啟用)
# getenforce (查看狀態)
2、編輯配置文件(永久關閉需要重啟)
# vi /etc/selinux/config
將SELINUX=enforcing改為:SELINUX=disabled
六、配置匿名用戶訪問
0、備份配置文件:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
1、vsftpd安裝後,其配置文件所在目錄為:/etc/vsftpd/;匿名用戶的主目錄為:/var/ftp
2、 配置vsftpd.conf主配置文件(服務器配置支持上傳)
# vi /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES (允許匿名用戶上傳文件)
anon_mkdir_write_enable=YES (允許匿名用戶創建目錄)
3、創建上傳目錄及配置目錄權限(註意:匿名用戶的主目錄/var/ftp權限是755,這個權限不能隨意改變,否則客戶端無法連接)
# mkdir /var/ftp/homework/
# chown ftp /var/ftp/homework/
# ls -Zd /var/ftp/homework/ (查看上下文)
drwxrwxr-x ftp ftp user_u:object_r:public_content_t /var/ftp/homework/
# chcon -t public_content_rw_t /var/ftp/homework/ (修改上下文,使可寫)
# ls -Zd /var/ftp/homework/ (查看確認上下文)
drwxrwxr-x ftp ftp user_u:object_r:public_content_rw_t /var/ftp/homework/
(若未關閉SELinux,還需以下步驟)
# getsebool -a | grep ftp (查找與ftp相關的 SELinux bool值)
# setsebool -P allow_ftpd_anon_write 1 (設置SELinux bool值, 允許ftpd寫, -P選項表示寫入配置文件並永久生效)
4、重啟服務
# service vsftpd restart
5、客戶端連接測試
(1) 客戶端匿名用戶可從pub下載文件
(2) 客戶端匿名用戶上傳文件至homework, 上傳文件的默認權限屬性為600(配置文件中anon_umask=077),無法下載、刪除或覆蓋的。
七、配置虛擬用戶訪問
1、建立虛擬用戶口令庫文件, 文件中奇數行設置虛擬用戶的用戶名,偶數行設置用戶的口令。
# vi /etc/vsftpd/vuser.txt
teacher (奇數行設置虛擬用戶名)
123456 (偶數行設置用戶口令)
student
123456
2、生成vsftpd 的認證文件
# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db (生成認證文件)
# file /etc/vsftpd/vuser.db (查看文件類型)
/etc/vsftpd/vuser.db:Berkeley DB (Hash,version 8 , native byte-order)
# chmod 600 /etc/vsftpd/vuser.db (生成的認證文件的權限應設置為只對root用戶可讀可寫)
3、建立虛擬用戶所需的PAM配置文件
# vi /etc/pam.d/vsftpd
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
4、建立vsftpd虛擬用戶所需的系統用戶賬號並設置相應的權限, 所有虛擬用戶賬號登錄後都將在/var/ftp目錄
# chmod u-w /var/ftp/
5、設置vsftpd.conf主配置文件
# vi /etc/vsftpd/vsftpd.conf
local_enable=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd (vsftpd意指:/etc/pam.d/目錄下的vsftpd文件)
(以下為可選項)
local_umask=022 (虛擬用戶上傳文件的掩碼)
anon_umask=077 (匿名用戶上傳文件的掩碼)
chown_uploads=YES (允許改變上傳文件的屬主)
chown_username=vuser (改變上傳文件的屬主為vuser)
6、重啟vsftpd服務
# service vsftpd restart
7、測試vsftpd中的虛擬用戶賬號teacher
#ftp 127.0.0.1
name (localhost:root):teacher
password:
ftp>
8、對不同的虛擬用戶設置不同的權限
(1).設置主配置文件
# mkdir /etc/vsftpd/vuser_conf (建立用戶配置文件的保存目錄)
# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuser_conf (設置用戶配置文件的保存目錄)
(2). 為虛擬用戶建立單獨的配置文件,配置文件名稱和用戶名相同。用戶配置文件中沒有的配置項將按照vsftpd.conf配置文件中的內容設置。
# vi /etc/vsftpd/vuser_conf/teacher
anon_upload_enable=YES (表示用戶可以上傳文件)
anon_mkdir_write_enable=YES (表示用戶具有建立和刪除目錄的權利)
anon_other_write_enable=YES (表示用戶具有文件改名和刪除文件的權限)
(3) 重啟服務
# service vsftpd restart
八、配置並啟動防火墻
1、設置被動模式及使用的端口號
# vi /etc/vsftpd/vsftpd.con
pasv_min_port=65300
pasv_max_port=65360
2、添加允許的端口
# iptables -I INPUT -p tcp --dport 65300:65360 -j ACCEPT
# service iptables save (保存配置)
3、重啟服務
# service iptables start
九、常見錯誤及解決方法
1、vsftpd: refusing to run with writable root inside chroot()
-> 原因:vsftpd升級了安全性驗證, 即如果開啟了chroot來控制用戶路徑,則用戶不能再具有根目錄的寫權限。
-> 解決:# chmod u-w /var/ftp/
2、cannot change directory:/var/ftp
-> 原因:SELinux阻止訪問
-> 解決:
# setsebool -P ftpd_disable_trans 1
# service vsftpd restart
3、上傳文件的中文文件名亂碼
-> 原因:字符集問題
-> 解決:
(1) # vi /etc/sysconfig/i18n
LANG="zh_CN.GB18030"
(2) 客戶端軟件設置字體為中文字體,連接字符集為GBxxx或cp936
4、提示只允許匿名用戶登錄
-> 解決:在vsftpd.conf中設置
local_enable=YES
vsftpd 安裝配置詳細教程