CentOS FTP Server使用常见问题解答
/etc/ftpusers
文件中,也会被拒绝登录;此外,用户主目录权限不足(如未设置读写权限)也会导致此错误。/etc/ftpusers
文件,确保目标用户未被列入(该文件默认禁止部分系统用户登录);调整用户主目录权限,例如sudo chmod 755 /home/ftpuser
(ftpuser
为FTP用户名),并确保目录所有者为用户自身(sudo chown ftpuser:ftpuser /home/ftpuser
)。sudo chmod 775 /home/ftpuser
);若启用了SELinux,需开启FTP访问用户目录的策略:sudo setsebool -P ftp_home_dir 1
(允许访问主目录),若仍无法写入,可临时开启完整FTP访问(不推荐生产环境长期使用):sudo setsebool -P allow_ftpd_full_access 1
。/var/ftp
)未设置正确的写权限。/etc/vsftpd/vsftpd.conf
),开启匿名写入权限:anon_upload_enable=YES
(允许上传)、anon_mkdir_write_enable=YES
(允许创建目录);设置匿名根目录的写权限:sudo chmod 777 /var/ftp
(注意:生产环境中建议限制为775
并指定所有者为root:root
)。sudo firewall-cmd --permanent --add-service=ftp
,然后重载防火墙:sudo firewall-cmd --reload
;若使用SELinux,临时设置为宽松模式测试:sudo setenforce 0
,若能连接则永久修改SELinux策略(sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
);检查vsftpd服务状态:sudo systemctl status vsftpd
,若未启动则启动服务:sudo systemctl start vsftpd
,并设置开机自启:sudo systemctl enable vsftpd
;使用netstat -antup | grep ftp
检查端口是否被占用(正常应显示vsftpd
进程监听21端口)。pasv_enable=YES
,并设置端口范围(如pasv_min_port=10000
、pasv_max_port=10100
);在防火墙中开放被动模式端口范围:sudo firewall-cmd --permanent --add-port=10000-10100/tcp
,然后重载防火墙:sudo firewall-cmd --reload
。chroot_local_user=YES
配置将用户锁定在主目录,但主目录权限设置不当(如未设置所有者为用户自身,或权限过严);allow_writeable_chroot
未开启(若用户需要写入chroot目录)。sudo chown ftpuser:ftpuser /home/ftpuser
),权限设置为755
(sudo chmod 755 /home/ftpuser
);若用户需要写入主目录,在vsftpd配置文件中添加:allow_writeable_chroot=YES
,然后重启vsftpd服务:sudo systemctl restart vsftpd
。sudo vsftpd /etc/vsftpd/vsftpd.conf
(若有错误会提示具体行号);检查端口占用情况:sudo netstat -antup | grep 21
,若端口被占用,修改vsftpd配置文件中的listen_port
参数为其他端口(如2121
),并在防火墙中开放新端口;查看系统日志获取详细错误信息:sudo tail -f /var/log/messages
或sudo tail -f /var/log/secure
,根据日志提示解决问题。