CentOS 7.3 安裝與配置vsftp
阿新 • • 發佈:2018-12-31
一、配置防火牆,開啟FTP服務需要的埠
- 關閉系統自帶的防火牆
#停止firewall
[root@localhost ~]# systemctl stop firewalld.service
#禁止firewall開機啟動
[root@localhost ~]# systemctl disable firewalld.service
- 安裝iptables防火牆
#安裝
[root@localhost ~]# yum install iptables-services
#編輯防火牆配置檔案
[root@localhost ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #儲存退出
#最後重啟防火牆使配置生效
[root@localhost ~]# systemctl restart iptables.service
#設定防火牆開機啟動
[root@localhost ~]# systemctl enable iptables.service
#說明:21埠是ftp服務埠;10060到10090是Vsftpd被動模式需要的埠,可自定義一段大於1024的tcp埠。
二、關閉SELINUX
[root@localhost ~]# vi /etc/selinux/config
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉
SELINUX=disabled #增加
:wq! #儲存退出
#使配置立即生效
[root@localhost ~]# setenforce 0
三、安裝vsftpd
#安裝vsftpd
[root@localhost ~]# yum install -y vsftpd
#安裝vsftpd虛擬使用者配置依賴包
[root@localhost ~]# yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
#啟動
[root@localhost ~]# systemctl start vsftpd.service
#設定開機啟動
[root@localhost ~]# systemctl enable vsftpd.service
四、配置vsftp伺服器
#備份預設配置檔案
[[email protected] ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
#執行以下命令進行設定
[[email protected] ~]# sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
[[email protected] ~]# echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES\npasv_min_port=10060\npasv_max_port=10090\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
五、建立虛擬使用者名稱單檔案
[root@localhost ~]# touch /etc/vsftpd/virtusers
#編輯虛擬使用者名稱單檔案:(第一行賬號,第二行密碼,注意:不能使用root做使用者名稱,系統保留)
[root@localhost ~]# vi /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456
:wq! #儲存退出
六、生成虛擬使用者資料檔案
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#設定PAM驗證檔案,並指定對虛擬使用者資料庫檔案進行讀取
[root@localhost ~]# chmod 600 /etc/vsftpd/virtusers.db
七、在/etc/pam.d/vsftpd的檔案頭部加入以下資訊(在後面加入無效)
#修改前先備份
[[email protected] ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
[[email protected] ~]# vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
#注意:如果系統為32位,上面改為lib,否則配置失敗
八、新建系統使用者vsftpd,使用者目錄為/home/wwwroot, 使用者登入終端設為/bin/false(即使之不能登入系統)
[root@localhost ~]# useradd vsftpd -d /home/wwwroot -s /bin/false
[root@localhost ~]# chown vsftpd:vsftpd /home/wwwroot -R
#如果虛擬使用者的宿主使用者為www,需要這樣設定。
[root@localhost ~]# chown www:www /home/wwwroot -R
九、建立虛擬使用者個人vsftp的配置檔案
[root@localhost ~]# mkdir /etc/vsftpd/vconf
[root@localhost ~]# cd /etc/vsftpd/vconf
#這裡建立三個虛擬使用者配置檔案
[root@localhost ~]# touch web1 web2 web3
[root@localhost ~]# mkdir -p /home/wwwroot/web1/http/
#編輯使用者web1配置檔案,其他的跟這個配置檔案類似
[root@localhost ~]# vi web1
local_root=/home/wwwroot/web1/http/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
十、最後重啟vsftpd伺服器
[root@localhost ~]# systemctl restart vsftpd.service
備註:
guest_username=vsftpd #指定虛擬使用者的宿主使用者(就是我們前面新建的使用者)
guest_username=www #如果ftp目錄是指向網站根目錄,用來上傳網站程式,可以指定虛擬使用者的宿主使用者為nginx執行賬戶www,可以避免很多許可權設定問題
本文轉載於一位不知名的大神,我稍微調整了一下顯示的格式,便於檢視。