常见原因及解决方法:
systemctl status vsftpd检查服务状态,未运行则执行systemctl start vsftpd启动。pasv_min_port/pasv_max_port)。使用firewall-cmd --permanent --add-service=ftp(CentOS)或iptables -A INPUT -p tcp --dport 21 -j ACCEPT(旧版)开放端口,然后firewall-cmd --reload或iptables-save > /etc/sysconfig/iptables生效。/etc/vsftpd.conf是否有拼写错误(如listen=YES误写为listen=YeS)或多余空格,修正后重启服务。常见原因及解决方法:
/etc/vsftpd.ftpusers(禁止登录用户列表)和/etc/vsftpd.user_list(默认禁止,需设置userlist_enable=NO允许)。若用户需登录,可执行echo username >> /etc/vsftpd.user_list添加。sestatus显示Enforcing),执行setsebool -P ftp_home_dir on允许访问家目录,setsebool -P allow_ftpd_full_access on允许完整FTP访问。ssh username@localhost)。常见原因及解决方法:
chown -R username:username /path/to/ftp/dir修改所有权,chmod -R 755 /path/to/ftp/dir设置权限(目录需rwxr-xr-x,文件需rw-r--r--)。ftp_home_dir,执行setsebool -P ftpd_disable_trans 1临时关闭SELinux对FTP的限制,或chcon -R -t public_content_rw_t /path/to/ftp/dir修改目录安全上下文。/etc/vsftpd.conf中write_enable=YES(允许上传),allow_writeable_chroot=YES(若chroot_local_user=YES,允许用户修改chroot目录)。常见原因及解决方法:
500 OOPS: cannot change directory:/home/username,多为SELinux限制。执行setsebool ftpd_disable_trans 1重启服务(systemctl restart vsftpd)。secure_chroot_dir指向的目录不存在(默认/usr/share/empty),需创建目录并修改配置:mkdir -p /opt/usr/share/empty,然后在vsftpd.conf中添加secure_chroot_dir=/opt/usr/share/empty。chroot_local_user=YES且用户无法上传,需设置allow_writeable_chroot=YES(避免chroot目录不可写)。常见原因及解决方法:
pasv_min_port=60000,pasv_max_port=60100),在vsftpd.conf中设置后,需在防火墙中开放该范围:firewall-cmd --permanent --add-port=60000-60100/tcp,然后firewall-cmd --reload。netstat -tuln | grep 60000查看,若有冲突则修改端口范围。常见原因及解决方法:
vsftpd.conf必须属于root用户,使用chown root:root /etc/vsftpd.conf修改属主。644(chmod 644 /etc/vsftpd.conf),避免其他用户修改导致安全问题。/var/log/vsftpd.log(或自定义日志路径)的权限,确保vsftpd进程(属主root)有写入权限,可使用chown root:vsftpd /var/log/vsftpd.log(若日志目录为vsftpd组)和chmod 664 /var/log/vsftpd.log设置。常见原因及解决方法:
pam_userdb认证),需确保guest_enable=YES(启用虚拟用户)、guest_username=ftp(虚拟用户映射到系统用户,如ftp)、virtual_use_local_privs=YES(虚拟用户权限与本地用户一致)。chroot_local_user=YES和user_sub_token=$USER(将虚拟用户映射到/var/ftp/$USER目录),并确保该目录存在(mkdir -p /var/ftp/username)且权限正确(chown ftp:ftp /var/ftp/username)。以上是vsftpd常见故障及解决方法,排查时建议优先查看日志文件(/var/log/vsftpd.log或journalctl -u vsftpd)获取具体错误信息,结合上述方法逐一排查。修改配置文件后需重启服务(systemctl restart vsftpd)使更改生效。