CentOS 上 VSFTPD 常见问题与解决方案
一 快速排查路径
sudo systemctl status vsftpdsudo systemctl start|restart vsftpdsudo ss -tulpen | grep ':21\|:20'anonymous_enable=NO、local_enable=YES、write_enable=YES、chroot_local_user=YESsudo firewall-cmd --permanent --add-service=ftp && sudo firewall-cmd --reloadsudo firewall-cmd --permanent --add-port=21/tcp && sudo firewall-cmd --reloadsudo setsebool -P ftp_home_dir onsudo setsebool -P allow_ftpd_full_access onsudo tail -f /var/log/vsftpd.logchmod 755 /data/ftp、chown ftpuser:ftpuser /data/ftp二 高频问题对照表
| 症状 | 常见原因 | 解决要点 |
|---|---|---|
| 连接超时/被拒绝 | 防火墙未放行、服务未启动、端口被占用 | 放行 21/tcp(及被动端口范围)、systemctl start vsftpd、`ss -tulpen |
| 530 Login incorrect | 用户名/密码错误、被禁止登录、PAM/SELinux 限制 | 核对凭据;检查 /etc/vsftpd/ftpusers 与 /etc/vsftpd/user_list;必要时 setsebool -P ftp_home_dir on |
| 500 OOPS: cannot change directory | 家目录权限/属主不当、SELinux 拒绝 | 设置家目录属主为登录用户且权限 755;setsebool -P ftp_home_dir on |
| 553 Could not create file | 目录不可写、SELinux/权限策略限制 | 目标目录对 FTP 进程可写(chmod/chown);必要时 setsebool -P allow_ftpd_full_access on |
| 被动模式数据连接失败 | 未配置 PASV 端口范围、云安全组/防火墙未放行 | 启用 pasv_enable=YES 并设置 pasv_min_port/pasv_max_port,在防火墙放行该范围 |
| 登录缓慢或频繁断开 | DNS 反向解析导致延迟 | 在 vsftpd.conf 加入 reverse_lookup_enable=NO |
| 日志为空或不详细 | 未启用日志或日志路径不当 | 启用 xferlog_enable=YES、xferlog_file=/var/log/vsftpd.log,调试时可开 log_ftp_protocol=YES |
以上要点涉及的配置项与命令示例可参考 vsftpd 配置项说明与常见排错实践。
三 被动模式与防火墙配置示例
pasv_enable=YESpasv_min_port=10060pasv_max_port=10070sudo firewall-cmd --permanent --add-port=21/tcpsudo firewall-cmd --permanent --add-port=10060-10070/tcpsudo firewall-cmd --reload四 用户访问与权限控制要点
anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESchroot_list_enable=YES 与 chroot_list_file=/etc/vsftpd/chroot_list 实现白/黑名单策略userlist_enable=YES 与 userlist_deny=YES/NO 实现黑名单或白名单chmod 755 /data/ftp、chown ftpuser:ftpuser /data/ftpchmod 644 /data/ftp/filesetsebool -P ftp_home_dir onsetsebool -P allow_ftpd_full_access on五 日志与配置校验清单
sudo systemctl restart vsftpdsudo vsftpd -t(若可用)sudo tail -f /var/log/vsftpd.loglog_ftp_protocol=YES(与 xferlog_std_format 互斥)