CentOS系统VSFTP故障排查步骤
-
检查服务状态
sudo systemctl status vsftpd # 查看服务是否运行 sudo systemctl start vsftpd # 启动服务 -
查看日志文件
sudo journalctl -xeu vsftpd.service # 查看详细错误日志 sudo tail -n 50 /var/log/vsftpd.log # 查看日志文件(部分系统路径可能不同) -
检查配置文件
sudo vsftpd -t /etc/vsftpd/vsftpd.conf # 检查语法错误 sudo nano /etc/vsftpd/vsftpd.conf # 确保关键参数正确(如listen、local_enable等) -
验证用户权限
- 确保用户主目录存在且权限正确:
sudo chown -R ftpuser:ftpuser /home/ftpuser # 修改属主 sudo chmod -R 755 /home/ftpuser # 设置权限 - 检查是否在
/etc/vsftpd/ftpusers或/etc/ftpusers中被限制。
- 确保用户主目录存在且权限正确:
-
处理防火墙与端口
- 开放FTP端口(默认21,被动模式需额外端口):
sudo firewall-cmd --permanent --add-port=21/tcp # firewalld sudo firewall-cmd --reload - 检查端口是否被占用:
sudo netstat -tuln | grep 21 # 若被占用需修改配置文件端口
- 开放FTP端口(默认21,被动模式需额外端口):
-
调整SELinux设置
- 临时允许FTP访问:
sudo setsebool -P ftp_home_dir on # 允许访问用户主目录 sudo setsebool -P ftpd_full_access on # 允许完全访问(如需上传) - 若需彻底禁用SELinux(不推荐):
sudo setenforce 0 # 临时关闭 sudo nano /etc/selinux/config # 永久修改为SELINUX=disabled
- 临时允许FTP访问:
-
常见错误处理
- 530 Login incorrect:检查用户名密码、
/etc/vsftpd.conf中local_enable是否为YES,或查看PAM配置。 - 553 Could not create file:确认用户主目录有写权限,且SELinux未限制。
- 500 OOPS: vsftpd: refusing to run:检查配置文件语法,确保
chroot_local_user等参数正确。
- 530 Login incorrect:检查用户名密码、
-
重启服务验证
每次修改配置后,执行:sudo systemctl restart vsftpd sudo systemctl status vsftpd # 确认服务正常运行