可能原因及解决方法:
systemctl status vsftpd检查服务状态,若未运行,执行systemctl start vsftpd启动服务。iptables -A INPUT -p tcp --dport 21 -j ACCEPT;firewall-cmd --permanent --add-service=ftp并firewall-cmd --reload开放FTP服务。/etc/vsftpd.conf文件(无多余空格、拼写错误),使用vsftpd /etc/vsftpd.conf测试配置正确性,修正后重启服务。可能原因及解决方法:
/etc/vsftpd.conf中local_enable=YES(允许本地系统用户登录)。/etc/pam.d/vsftpd文件(默认配置通常无需修改,若自定义需确保包含pam_listfile.so等必要模块)。enforcing模式,执行setenforce 0临时关闭,或修改/etc/selinux/config中SELINUX=permissive永久关闭(生产环境建议调整策略而非完全关闭)。可能原因及解决方法:
chown -R username:username /home/username(所有权归用户自身),chmod 700 /home/username(仅用户可读写执行);chroot_local_user=YES(限制用户在家目录),需设置allow_writeable_chroot=YES(允许家目录可写)。/etc/vsftpd.conf中write_enable=YES(允许本地用户上传文件)。chcon -Rv --reference=/var/www/html /home/username(参考/var/www/html的上下文)。解决方法:
setenforce 0(重启后恢复enforcing模式)。/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,重启服务器。setsebool -P ftpd_disable_trans 1(允许FTP服务绕过SELinux传输控制),或根据错误日志调整对应策略。常见错误场景及解决步骤:
listen=YES与listen_ipv6=YES同时开启(仅能选其一),或chroot_local_user=YES与allow_writeable_chroot=NO组合(会导致“cannot change directory”错误)。#后不能有空格)。/etc/vsftpd.conf后,执行vsftpd /etc/vsftpd.conf检查语法,无错误后再重启服务:systemctl restart vsftpd。优化措施:
/etc/vsftpd.conf中设置max_connections=100(最大总连接数)、max_per_ip=5(单个IP最大连接数),防止资源耗尽。pasv_enable=YES、pasv_min_port=10000、pasv_max_port=10100(指定被动模式端口范围),并开放防火墙对应端口范围。xferlog_enable=NO(关闭详细传输日志,减少IO压力)、ascii_upload_enable=NO(禁用ASCII模式上传,提升二进制文件传输效率)。日志位置及查看方法:
/var/log/vsftpd.log(若存在,记录详细连接和错误信息);/var/log/auth.log或/var/log/secure(记录认证失败信息)。tail -f /var/log/vsftpd.log跟踪最新日志,定位具体错误(如“500 OOPS: vsftpd: refusing to run with root privileges”表示root用户登录被拒绝,需修改配置禁止root登录:local_enable=YES但chroot_local_user=YES)。以上是VSFTP常见故障的排查思路与解决方法,每次修改配置后需重启服务(systemctl restart vsftpd)使变更生效。若问题仍未解决,可通过日志信息进一步分析或参考VSFTP官方文档。