前言
正如vsftpd官方宣傳中所說Probably the most secure and fastest FTP server for UNIX-like systems.
我相信這是大多數(shù)人選擇vsftpd來搭建Linux的FTP服務器的原因,當然ProFTPD用的人應該也不在少數(shù)辱士。文章將以清晰直觀的方式介紹安裝vsftpd以及配置FTP虛擬用戶的過程南吮,希望對大家有幫助加缘。
首選的FTP服務器搭建方式
更新歷史
2015年08月24日 - 初稿
閱讀原文 - http://wsgzao.github.io/post/vsftpd/
擴展閱讀
CentOS 6.4 下安裝vsftpd - http://www.cnblogs.com/xiongpq/p/3384759.html
ProFTPD - http://www.proftpd.org/
vsftpd - http://vsftpd.beasts.org
安裝vsftpd
#查看當前系統(tǒng)版本
cat /etc/redhat-release
CentOS release 6.6 (Final)
#查看是否已經(jīng)安裝vsftpd
rpm -qa | grep vsftpd
#如果沒有,就安裝,并設(shè)置開機啟動
yum -y install vsftpd
chkconfig vsftpd on
基于虛擬用戶的配置
所謂虛擬用戶就是沒有使用真實的帳戶,只是通過映射到真實帳戶和設(shè)置權(quán)限的目的。虛擬用戶不能登錄CentOS系統(tǒng)族吻。
修改配置文件
vi /etc/vsftpd/vsftpd.conf
#服務器獨立運行
listen=YES
#設(shè)定不允許匿名訪問
anonymous_enable=NO
#設(shè)定本地用戶可以訪問。注:如使用虛擬宿主用戶,在該項目設(shè)定為NO的情況下所有虛擬用戶將無法訪問
local_enable=YES
#使用戶不能離開主目錄
chroot_list_enable=YES
#設(shè)定支持ASCII模式的上傳和下載功能
ascii_upload_enable=YES
ascii_download_enable=YES
#PAM認證文件名超歌。PAM將根據(jù)/etc/pam.d/vsftpd進行認證
pam_service_name=vsftpd
#設(shè)定啟用虛擬用戶功能
guest_enable=YES
#指定虛擬用戶的宿主用戶砍艾,CentOS中已經(jīng)有內(nèi)置的ftp用戶了
guest_username=ftp
#設(shè)定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)
user_config_dir=/etc/vsftpd/vuser_conf
#配置vsftpd日志(可選)
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
進行認證
#安裝Berkeley DB工具握础,很多人找不到db_load的問題就是沒有安裝這個包
yum install db4 db4-utils
#創(chuàng)建用戶密碼文本辐董,注意奇行是用戶名,偶行是密碼
vi /etc/vsftpd/vuser_passwd.txt
test
123456
#生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
#編輯認證文件禀综,全部注釋掉原來語句简烘,再增加以下兩句
vi /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
#創(chuàng)建虛擬用戶配置文件
mkdir /etc/vsftpd/vuser_conf/
#文件名等于vuser_passwd.txt里面的賬戶名,否則下面設(shè)置無效
vi /etc/vsftpd/vuser_conf/test
#虛擬用戶根目錄,根據(jù)實際情況修改
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
設(shè)置FTP根目錄權(quán)限
#最新的vsftpd要求對主目錄不能有寫的權(quán)限所以ftp為755定枷,主目錄下面的子目錄再設(shè)置777權(quán)限
mkdir /data/ftp
chmod -R 755 /data
chmod -R 777 /data/ftp
#建立限制用戶訪問目錄的空文件
touch /etc/vsftpd/chroot_list
#如果啟用vsftpd日志需手動建立日志文件
touch /var/log/xferlog
touch /var/log/vsftpd.log
配置PASV模式(可選)
vsftpd默認沒有開啟PASV模式孤澎,現(xiàn)在FTP只能通過PORT模式連接,要開啟PASV默認需要通過下面的配置
打開/etc/vsftpd/vsftpd.conf欠窒,在末尾添加
#開啟PASV模式
pasv_enable=YES
#最小端口號
pasv_min_port=40000
#最大端口號
pasv_max_port=40080
pasv_promiscuous=YES
#在防火墻配置內(nèi)開啟40000到40080端口
-A INPUT -m state --state NEW -m tcp -p -dport 40000:40080 -j ACCEPT
#重啟iptabls和vsftpd
service iptables restart
service vsftpd restart
現(xiàn)在可以使用PASV模式連接你的FTP服務器了~
Selinux和防火墻
該關(guān)閉的關(guān)閉覆旭,該放行的放行
service vsftpd start
常見問題
如果登錄時出現(xiàn)
500 OOPS: priv_sock_get_result. Connection closed by remote host.
這樣的錯誤,需要升級pam
yum update pam