CentOS 7 安裝配置 Vsftpd
vsftpd 是“very secure FTP daemon”的縮寫,是一款在Linux發行版中最受推崇的 FTP 服務器程序。特點是小巧輕快,安全易用。支持很多其他的 FTP 服務器所不支持的特徵,比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。
安裝 Vsftpd
安裝 Vsftpd
更新 yum 源
yum -y update
檢查是否已安裝:
rpm -qa | grep vsftpd
如果無,則安裝:
yum -y install vsftpd
如果有,則更新:
yum -y update vsftpd
查看版本信息:
vsftpd -v
vsftpd: version 3.0.2
啓動 vsftpd 服務:
systemctl start vsftpd.service
設置開機啓動:
systemctl enable vsftpd.service
安裝依賴工具
安裝 Berkeley DB,用於生成虛擬用戶數據 db 文件:(centos 7需要先安裝epel yum 源)
yum -y install db4-utils
安裝 PAM,用於用戶認證:
yum -y install pam*
配置 Vsftpd
核心配置
備份默認的配置文件:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
重新創建配置文件:
vi /etc/vsftpd/vsftpd.conf
添加配置信息**(注意等號兩邊不能有空格)**:
anonymous_enable=NO local_enable=YES local_umask=022 #tcp_wrappers=NO reverse_lookup_enable=NO pam_service_name=vsftpd #userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list #chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list allow_writeable_chroot=YES #listen=YES listen_port=21 connect_from_port_20=YES pasv_enable=YES pasv_promiscuous=YES pasv_min_port=8000 pasv_max_port=8100 #accept_timeout=120 connect_timeout=120 data_connection_timeout=180 idle_session_timeout=600 local_max_rate=0 #dirmessage_enable=NO xferlog_enable=YES xferlog_file=/var/log/vsftpd.log #log_ftp_protocol=YES xferlog_std_format=YES #guest_enable=YES guest_username=root virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vuser_conf
注意:guest_username
一般填寫目錄所有者,一般爲 root 或者 www、ftp 等。
虛擬用戶權限配置
備份 user_list
(允許訪問 FTP 的用戶名單):
mv /etc/vsftpd/user_list /etc/vsftpd/user_list.bak
Shell
重新創建 user_list
文件並添加允許訪問的 FTP 用戶名(一行一個):
vi /etc/vsftpd/user_list
創建 chroot_list
文件:
touch /etc/vsftpd/chroot_list
如果有允許訪問上級目錄的用戶,在該文件中添加用戶名(一行一個)。
虛擬用戶獨立配置
新建虛擬用戶獨立配置路徑文件夾:
mkdir /etc/vsftpd/vuser_conf
添加虛擬用戶獨立配置(文件名爲用戶名):
vi /etc/vsftpd/vuser_conf/test
寫入該用戶的獨立配置:
local_root=/home/wwwroot/www.xxx.com write_enable=YES download_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
注意: local_root
爲 FTP 用戶根目錄。
日誌文件
創建日誌文件:
touch /var/log/vsftpd.log
設置文件權限:
chown ftp:ftp /var/log/vsftpd.log
重啓 Vsftpd:
systemctl restart vsftpd.service
虛擬用戶認證
生成用戶認證文件
添加虛擬用戶認證文件:
vi /etc/vsftpd/vsftpd_vuser
在文件中添加虛擬用戶名和密碼,奇數行用戶名,偶數行密碼:
testtest123
生成虛擬用戶認證文件**(每次修改虛擬用戶密碼均需重新生成一次)**:
db_load -T -t hash -f /etc/vsftpd/vsftpd_vuser /etc/vsftpd/vsftpd_vuser.db
如果出現以下錯誤:
db_load: unexpected end of input data or key/data pair、db_load: odd number of key/data pairs
請在 /etc/vsftpd/vsftpd_vuser
最後添加一行空行,再嘗試生成用戶認證文件。
設置文件權限,只有 root 用戶可以讀寫:
chmod 600 /etc/vsftpd/vsftpd_vuser.db
配置 PAM
備份 vsftpd 的 PAM 認證文件:
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
重新創建 PAM 文件:
vi /etc/pam.d/vsftpd
添加配置:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_vuser account required pam_userdb.so db=/etc/vsftpd/vsftpd_vuser
64 位系統再在下面添加以下兩行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_vuser
防火牆設置
查看 ftp 服務是否已經永久啓用:
firewall-cmd --permanent --query-service=ftp
如果沒有,則啓用 ftp 服務:
firewall-cmd --permanent --add-service=ftp
給 ftp 服務添加 vsftpd 命令傳輸端口和被動模式端口:
# 添加 vsftpd 命令傳輸端口 20/tcpfirewall-cmd --permanent --service=ftp --add-port=20/tcp# 添加上面設置的被動模式端口段 8000-8100/tcpfirewall-cmd --permanent --service=ftp --add-port=8000-8100/tcp、
查看下次重啓(防火牆重新加載、服務器重啓或者系統重啓)之後永久生效的服務:
firewall-cmd --permanent --list-service
查看下次重啓(防火牆重新加載、服務器重啓或者系統重啓)之後永久生效的 ftp 服務的信息:
firewall-cmd --permanent --info-service=ftp
ftp
ports: 21/tcp 20/tcp 8000-8100/tcp
protocols:
source-ports:
modules: ftp
destination:
重新加載防火牆規則:
firewall-cmd --reload
注意: 阿里雲主機需要在安全組規則中添加入方向的 20/tcp, 21/tcp, 8000-8100/tcp
端口。
FTP 客戶端
推薦使用免費開源的全平臺支持的 FileZilla:FileZilla 官方下載
添加站點信息,常規配置即可:
主機:填寫主機 IP
端口:如果沒改過端口不需填寫
協議:FTP - 文件傳輸協議
加密:只使用普通的 FTP
登錄類型:正常
用戶:test
密碼:test123
高級配置:
默認本地目錄:選擇電腦上面需要和服務器上面傳輸文件的路徑
默認遠程目錄:一般情況下是根目錄,就填寫
/
同步瀏覽:開啓後在兩邊界面切換目錄時會同步切換,只有一邊有的目錄會提示是否下載或上傳
比較瀏覽:會高亮顯示兩邊不同的文件或目錄,對齊顯示都有的文件或目錄