要修复 Linux FTP 服务器报错,首先需要明确报错信息。不同 FTP 服务端(vsftpd、ProFTPD、Pure-FTPd)和不同错误现象,修复方式差异很大。下面我按常见场景 + 排查步骤给你一个通用排查与修复指南。
ps aux | grep -E 'vsftpd|proftpd|pure-ftpd'
或
systemctl status vsftpd
常见服务:
例如:
530 Login incorrect500 OOPS421 Service not availableConnection refused# vsftpd
tail -n 50 /var/log/vsftpd.log
# 或
journalctl -u vsftpd -n 50
# 系统日志
tail -n 50 /var/log/messages
tail -n 50 /var/log/secure
原因:
修复:
# 确认用户存在
id ftpuser
# 确保用户 shell 合法
grep ftpuser /etc/passwd
# vsftpd 配置
vi /etc/vsftpd/vsftpd.conf
确保:
local_enable=YES
write_enable=YES
若使用虚拟用户,检查:
guest_enable=YES
guest_username=ftp
原因:
修复:
# 关闭 SELinux(临时)
setenforce 0
# 或允许 FTP 访问家目录
setsebool -P ftp_home_dir on
目录权限:
chmod 755 /home/ftpuser
chown ftpuser:ftpuser /home/ftpuser
原因:
修复:
systemctl restart vsftpd
systemctl enable vsftpd
检查端口:
netstat -tunlp | grep 21
现象:能登录,但列目录卡住
修复(vsftpd):
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP
防火墙开放:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
原因:
systemctl status vsftpd
firewall-cmd --list-all
你可以直接把完整报错信息贴出来,例如:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
或者:
我可以一步一步帮你修 ✅