在 Linux 上排查 FTP 服务器(如 vsftpd、proftpd、pure-ftpd)故障,一般可以从网络、服务、配置、权限、日志、防火墙/SELinux几个方面入手。下面以最常见的 vsftpd 为例,给出一套通用排查思路。
ps -ef | grep ftp
# 或
systemctl status vsftpd
如果没有运行:
systemctl start vsftpd
systemctl enable vsftpd
查看端口监听:
netstat -tunlp | grep 21
# 或
ss -tunlp | grep 21
iptables -L -n
firewall-cmd --list-all
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing:
setsebool -P ftpd_full_access on
查看 FTP 相关布尔值:
getsebool -a | grep ftp
如家目录无法访问:
chcon -R -t public_content_t /home/ftpuser
/var/log/vsftpd.log
/var/log/messages
/var/log/secure
查看实时日志:
tail -f /var/log/vsftpd.log
常见错误:
Login failed → 用户/密码/权限Permission denied → 目录权限Connection refused → 服务未起或端口问题常见文件:
/etc/vsftpd/vsftpd.conf
重点检查:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_min_port=30000
pasv_max_port=31000
改完配置重启:
systemctl restart vsftpd
id ftpuser
ls -ld /home/ftpuser
chmod 755 /home/ftpuser
grep ftpuser /etc/passwd
应为:
/sbin/nologin
建议:
ftp localhost
或:
lftp ftp://user:pass@ip
| 现象 | 可能原因 |
|---|---|
| 连不上 | 服务未起 / 防火墙 |
| 能连不能登 | 用户名密码 / SELinux |
| 能登不能传 | write_enable / 目录权限 |
| 登录后跳根目录 | chroot 配置 |
| 被动模式卡住 | 被动端口未放行 |
如果你能告诉我:
我可以直接帮你定位问题。