yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
# 或舊版指令
service vsftpd start|stop|restart|status
groupadd ftp-users
mkdir -p /home/ftp-docs
chmod 770 /home/ftp-docs # 群組可寫
chown root:ftp-users /home/ftp-docs
useradd -g ftp-users -d /home/ftp-docs -s /sbin/nologin ftpuser1
passwd ftpuser1
# 重複建立多個用戶
/etc/vsftpd/vsftpd.conf# 基礎
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
# 安全與限制
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30100
# 防火牆開放主動/被動端口
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-30100/tcp
firewall-cmd --reload
# SELinux(參考上一篇)
setsebool -P ftp_home_dir on
setsebool -P ftpd_full_access on
# 本機
ftp localhost
# 遠端
ftp server-ip
# 或使用 FileZilla、WinSCP 等圖形客戶端
| 現象 | 解決 |
|---|---|
| 500 OOPS: cannot change directory | SELinux 布林值未開啟 |
| 530 Login incorrect | 檢查 /etc/pam.d/vsftpd、用戶 shell 是否在 /etc/shells |
| 被動模式 ls 掛起 | 防火牆未開放 pasv_min/max_port 範圍 |
| 上傳權限不足 | 目錄 chmod 770、chown root:ftp-users、umask 022 |
完成上述步驟,即擁有一個安全、支援被動模式、可多用戶隔離的 Vsftpd 服務。