vsftpd 安裝配置詳細教程

linux下ftp軟件很多,大體特色:<br /> wu-ftp:比較老牌,但針對它的攻擊比較多,設置比較麻煩,但功能比較強大。<br /> vsftpd:功能強大,配置也比較簡單
 

linux下ftp軟件很多,大體特色:
wu-ftp:比較老牌,但針對它的攻擊比較多,設置比較麻煩,但功能比較強大。
ProFTPD:能實現wu-ftp以及server-U的全部功能。安全性也較高,但比起vsftpd配置稍顯複雜。
vsftpd:功能強大,配置也比較簡單linux

選vsftpd是由於它安全、速度快。
選ProFTPD偶爾看到webmin支持他,因此就用了,由於方便。
選Serv-U理由windows廣泛,Serv-U方便,但最大問題是盜版,因此如今不大用了。web

1、安裝
# yum install vsftpdwindows

2、安裝db4包,使能db_load
# yum install db4.i386
# yum install db4-utils.i386安全

3、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 日誌文件服務器

4、關閉防火牆
# service iptables stoptcp

5、關閉SELinux
方法有多個
一、暫時關閉(不須要重啓)
# setenforce 0 (關閉)
# setenforce 1 (啓用)
# getenforce   (查看狀態)ide

二、編輯配置文件(永久關閉須要重啓)
# vi /etc/selinux/config
將SELINUX=enforcing改成:SELINUX=disabled測試

6、配置匿名用戶訪問
0、備份配置文件:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak字體

一、vsftpd安裝後,其配置文件所在目錄爲:/etc/vsftpd/;匿名用戶的主目錄爲:/var/ftp
二、 配置vsftpd.conf主配置文件(服務器配置支持上傳)
# vi /etc/vsftpd/vsftpd.conf
 ui

複製代碼代碼以下:
anonymous_enable=YES        (容許匿名用戶訪問)
anon_upload_enable=YES      (容許匿名用戶上傳文件)
anon_mkdir_write_enable=YES (容許匿名用戶建立目錄)

三、建立上傳目錄及配置目錄權限(注意:匿名用戶的主目錄/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選項表示寫入配置文件並永久生效)

四、重啓服務
# service vsftpd restart

五、客戶端鏈接測試
(1) 客戶端匿名用戶可從pub下載文件
(2) 客戶端匿名用戶上傳文件至homework, 上傳文件的默認權限屬性爲600(配置文件中anon_umask=077),沒法下載、刪除或覆蓋的。

7、配置虛擬用戶訪問
一、創建虛擬用戶口令庫文件, 文件中奇數行設置虛擬用戶的用戶名,偶數行設置用戶的口令。
# vi /etc/vsftpd/vuser.txt
teacher      (奇數行設置虛擬用戶名)
123456      (偶數行設置用戶口令)
student
123456

二、生成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用戶可讀可寫)

三、創建虛擬用戶所需的PAM配置文件
# vi /etc/pam.d/vsftpd
 

複製代碼代碼以下:
auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser    (注:無須後綴.db)
account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser

四、創建vsftpd虛擬用戶所需的系統用戶帳號並設置相應的權限, 全部虛擬用戶帳號登陸後都將在/var/ftp目錄
 

複製代碼代碼以下:
# useradd -s /sbin/nologin -d /var/ftp/ vuser
# chmod u-w /var/ftp/

五、設置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)

六、重啓vsftpd服務
# service vsftpd restart

七、測試vsftpd中的虛擬用戶帳號teacher
#ftp 127.0.0.1
name (localhost:root):teacher
password:
ftp>

八、對不一樣的虛擬用戶設置不一樣的權限
(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_world_readable_only=NO   (表示用戶能夠瀏覽FTP目錄和下載文件)
anon_upload_enable=YES        (表示用戶能夠上傳文件)
anon_mkdir_write_enable=YES   (表示用戶具備創建和刪除目錄的權利)
anon_other_write_enable=YES   (表示用戶具備文件更名和刪除文件的權限)

(3) 重啓服務
# service vsftpd restart

8、配置並啓動防火牆
一、設置被動模式及使用的端口號
# vi /etc/vsftpd/vsftpd.con
 

複製代碼代碼以下:
pasv_enable=YES
pasv_min_port=65300
pasv_max_port=65360

二、添加容許的端口
 

複製代碼代碼以下:
# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
# iptables -I INPUT -p tcp --dport 65300:65360 -j ACCEPT
# service iptables save     (保存配置)

三、重啓服務
 

複製代碼代碼以下:
# service vsftpd restart
# service iptables start

9、常見錯誤及解決方法
一、vsftpd: refusing to run with writable root inside chroot()
-> 緣由:vsftpd升級了安全性驗證, 即若是開啓了chroot來控制用戶路徑,則用戶不能再具備根目錄的寫權限。
-> 解決:# chmod u-w /var/ftp/

二、cannot change directory:/var/ftp
-> 緣由:SELinux阻止訪問
-> 解決:
# setsebool -P ftpd_disable_trans 1
# service vsftpd restart

三、上傳文件的中文文件名亂碼
-> 緣由:字符集問題
-> 解決:
(1) # vi /etc/sysconfig/i18n
LANG="zh_CN.GB18030"
(2) 客戶端軟件設置字體爲中文字體,鏈接字符集爲GBxxx或cp936

四、提示只容許匿名用戶登陸-> 解決:在vsftpd.conf中設置local_enable=YES

相關文章
相關標籤/搜索