前些天要給服務器安裝一個ftp服務,查詢了一下網(wǎng)絡資料,準備安裝vsftpd,簡單的說一下安裝過程肠缔,很多部分內(nèi)容都是網(wǎng)上搜索來的。
- 通過yum來安裝vsftpd
[root@localhost ~]# yum -y install vsftpd
- 設置為開機啟動
[root@localhost ~]# chkconfig vsftpd on
- 進行相關(guān)配置哼转,配置修改在/etc/vsftpd/vsftpd.conf里面;
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
然后安裝好vsftpd之后的配置才是重中之重
····························我是一條調(diào)皮的分割線····························
因為ftp上傳的內(nèi)容是web前端的內(nèi)容明未,放在nginx服務器下運行,需要 www(代碼運行的用戶就是www) 權(quán)限壹蔓,所以我們這邊不創(chuàng)建一個新的ftp用戶來運行ftp的服務趟妥,而是使用虛擬用戶
anonymous_enable=NO 設定不允許匿名訪問
local_enable=YES 設定本地用戶可以訪問。注:如使用虛擬宿主用戶佣蓉,在該項目設定為NO的情況下所有虛擬用戶將無法訪問披摄。
chroot_list_enable=YES 使用戶不能離開主目錄
xferlog_file=/var/log/vsftpd.log 設定vsftpd的服務日志保存路徑亲雪。注意,該文件默認不存在行疏。必須要手動touch出來
ascii_upload_enable=YES
ascii_download_enable=YES 設定支持ASCII模式的上傳和下載功能匆光。
pam_service_name=vsftpd PAM認證文件名套像。PAM將根據(jù)/etc/pam.d/vsftpd進行認證
以下這些是關(guān)于Vsftpd虛擬用戶支持的重要CentOS FTP服務配置項目酿联。默認vsftpd.conf中不包含這些設定項目,需要自己手動添加CentOS FTP服務配置夺巩。
guest_enable=YES 設定啟用虛擬用戶功能贞让。
guest_username=www 指定虛擬用戶的宿主用戶。
user_config_dir=/etc/vsftpd/vuser_conf 設定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑柳譬。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)
進行認證:
首先喳张,安裝Berkeley DB工具,很多人找不到db_load的問題就是沒有安裝這個包美澳。
yum install db4 db4-utils
然后销部,創(chuàng)建用戶密碼文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用戶名制跟,偶行是密碼
test
123456
接著舅桩,生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
隨后,編輯認證文件/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)建虛擬用戶個性CentOS FTP服務文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test(注:文件名等于vuser_passwd.txt里面的賬戶名聊记,否則下面設置無效)
內(nèi)容如下:
local_root=/data/www/html 虛擬用戶的根目錄(根據(jù)實際修改)
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
····························我是一條調(diào)皮的分割線····························
遇到的一些坑
連接的時候返回類似報錯
vsftpd:500 OOPS: bad bool value in config file for: anonymous_enable
這種情況一般是參數(shù)配置的時候多加了空格撒妈,回去好好檢查一下 /etc/vsftpd/vsftpd.conf 文件和 /etc/vsftpd/vuser_conf 下的虛擬個人用戶配置文件(ps.前后都不能有空格)-
新版vsftp的chroot設置問題 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
為了避免一個安全漏洞,從 vsftpd 2.3.5 開始排监,chroot 目錄必須不可寫
使用命令:
$ chmod a-w /home/user user 為FTP所連接的目錄
本人使用如上方法之后仍然沒有解決問題狰右,修改之后雖然可以正常連接ftp服務了,但是上傳文件仍然報錯舆床,估計是權(quán)限的寫入問題挟阻,一番查找之后,終于查找到最終解決方案:
$ vi /etc/vsftpd.conf
添加 allow_writeable_chroot=YES保存退出
重啟vsftp服務峭弟,即可正常登錄. -
關(guān)于vsftp出現(xiàn)Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解決辦法
剛剛在搭建ftp服務器時附鸽,在配置好一切的參數(shù)之后,在我重啟時瞒瘸,出現(xiàn)了無法啟動的錯誤坷备,將配置文件改了好多次都更改不好,終于在經(jīng)過一陣查資料后情臭,終于將問題定位了出來
出現(xiàn)錯誤的原因是:由于centos7中vsftp的配置文件默認將 listen_ipv6=YES 這一行沒有注釋掉省撑,而我們目前的網(wǎng)絡環(huán)境還不支持ipv6赌蔑,從而導致出現(xiàn)錯誤無法啟動,所以解決方法是將 listen_ipv6=YES更改為:listen_ipv6=NO竟秫,或?qū)⑦@一行注釋掉
按上面的方法注釋掉 listen_ipv6=YES后娃惯,成功啟動vsftp