RedHat 6.7系统中vsftpd服务启动与停止失败问题求助
Hey there, let's troubleshoot why your vsftpd service is failing to start and stop on RHEL 6.7. Here are step-by-step checks and fixes you can try:
1. 先查看详细错误日志
服务启动失败的核心原因通常会记录在系统日志里,先看看这两个关键日志文件:
- 查看系统消息日志:
tail -n 20 /var/log/messages - 查看vsftpd专属日志(如果存在):
tail -n 20 /var/log/vsftpd.log
这些日志会告诉你具体的错误原因,比如配置文件语法错误、端口被占用、权限不足或者PAM认证问题。
2. 验证vsftpd配置文件语法
虽然你提供的配置内容看起来没问题,但可能存在隐藏的语法错误(比如多余空格、拼写错误),用官方工具检测:
vsftpd -t
如果配置有问题,这个命令会直接指出错误位置,你可以针对性修正。
3. 检查端口占用情况
vsftpd默认使用21端口,先确认这个端口有没有被其他进程占用:
netstat -tulpn | grep :21
如果输出里有其他进程(比如另一个FTP服务或者无关进程)占用了21端口,你需要杀掉该进程(用kill <PID>),或者修改vsftpd配置文件里的listen_port参数更换端口。
4. 检查文件与目录权限
vsftpd对权限要求很严格,以下几个关键位置要确认:
- 配置文件
/etc/vsftpd/vsftpd.conf:权限应为600,属主属组为root:rootls -l /etc/vsftpd/vsftpd.conf - 匿名FTP目录
/var/ftp/:权限应为755,属主属组为root:root(不能设为777,否则vsftpd会拒绝启动)ls -ld /var/ftp/ - 日志目录
/var/log/vsftpd/(如果存在):权限应为755,属主属组为root:root
5. 检查PAM配置
你的配置里设置了pam_service_name=vsftpd,要确保对应的PAM配置文件存在且正常:
ls -l /etc/pam.d/vsftpd
如果文件丢失,你可以从系统安装介质或者同版本正常机器上复制一份,或者重新安装vsftpd包恢复:
yum reinstall vsftpd
6. 排查SELinux限制
RHEL 6.7默认启用SELinux,它可能会阻止vsftpd的正常运行:
- 先临时关闭SELinux测试:
然后尝试启动vsftpd,如果能成功启动,说明是SELinux的问题。setenforce 0 - 永久调整SELinux规则(不要直接关闭SELinux):
允许vsftpd访问必要的资源,比如开启FTP全访问权限:
或者根据日志里的SELinux提示,用setsebool -P ftpd_full_access onaudit2allow工具生成对应的规则模块。
7. 尝试重新安装vsftpd
如果以上步骤都没解决问题,可能是vsftpd的二进制文件或依赖文件损坏,尝试重新安装:
yum remove vsftpd yum install vsftpd
然后恢复你的配置文件(记得先备份原配置)。
备注:内容来源于stack exchange,提问作者Dhruba Sharma

