首先确认vsftpd服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status vsftpd
若服务未启动,执行以下命令启动:
sudo systemctl start vsftpd
若需设置开机自启,可运行:
sudo systemctl enable vsftpd
日志是定位故障的关键,vsftpd的默认日志路径为/var/log/vsftpd.log(部分系统可能使用/var/log/messages或/var/log/secure)。使用以下命令查看日志:
sudo tail -f /var/log/vsftpd.log # 实时查看最新日志
通过日志中的错误信息(如“530 Login incorrect”“500 OOPS”等),可快速定位问题根源。
vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,需重点检查以下关键配置项:
local_enable=YES(允许本地用户登录)、anonymous_enable=NO(禁用匿名登录,若需禁用);write_enable=YES(允许用户上传文件);chroot_local_user=YES(将用户限制在主目录,提升安全性);若需允许用户访问其他目录,可设置为NO或通过chroot_list_file指定例外用户;pasv_enable=YES、pasv_min_port=10000、pasv_max_port=10100(指定被动模式端口范围),并在防火墙中开放该范围。修改配置文件后,需重启服务使更改生效:
sudo systemctl restart vsftpd
id username命令检查);755(避免权限过高导致安全问题):sudo chown -R ftpuser:ftpuser /home/ftpuser # 替换为实际用户名和目录
sudo chmod -R 755 /home/ftpuser
/etc/vsftpd.ftpusers(禁止FTP登录的系统用户,如root)和/etc/vsftpd.user_list(若userlist_enable=YES,则该文件中的用户默认无法登录,除非userlist_deny=NO)。CentOS默认使用firewalld作为防火墙,需开放FTP相关端口:
pasv_min_port至pasv_max_port范围(如10000-10100)。具体命令如下:
# 开放FTP服务(默认包含21端口)
sudo firewall-cmd --permanent --add-service=ftp
# 若使用被动模式,开放自定义端口范围
sudo firewall-cmd --permanent --add-port=10000-10100/tcp
# 重新加载防火墙配置
sudo firewall-cmd --reload
若SELinux处于Enforcing模式(getenforce命令返回Enforcing),可能会限制vsftpd的功能,需调整以下策略:
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on
sudo setenforce 0 # 临时关闭(重启后恢复)
若问题解决,需通过上述setsebool命令永久调整策略。/etc/vsftpd.ftpusers或/etc/vsftpd.user_list(若userlist_enable=YES)中;验证/etc/pam.d/vsftpd文件中的PAM认证配置是否正确(默认通常无需修改)。chmod 755);检查SELinux是否阻止写入(通过setsebool allow_ftpd_full_access on解决)。ftp_home_dir=1或setenforce 0测试)。通过以上步骤,可覆盖vsftpd在CentOS上的常见故障场景。若问题仍未解决,建议结合日志信息进一步分析,或参考vsftpd官方文档获取更详细的配置说明。