在安装好ftp,vsftpd之后,终端运行ftp x.x.x.x(ip),输入用户名和密码后,再ls出现refused等字眼,则问题核心在于FTP的权限配置和被动模式设置。
解决550 Permission denied(权限不足)
这通常是因为启用了chroot_local_user=YES,但FTP用户的家目录又允许写入,触发了 vsftpd 的安全机制。
方法一(推荐):给家目录去除写权限,创建子目录用于上传
sudo chmod a-w /home/ronghe # 去除家目录的写权限 sudo mkdir -p /home/ronghe/upload # 创建一个专门用于上传的子目录 sudo chown ronghe:ronghe /home/ronghe/upload # 确保FTP用户对该子目录有所有权完成后,使用
ftp登录后,cd upload即可上传文件。方法二:在配置中允许
chroot目录可写(较便捷,但安全性略低)
编辑/etc/vsftpd/vsftpd.conf,添加或修改参数:allow_writeable_chroot=YES保存后执行
sudo systemctl restart vsftpd重启服务即可。
🔧 解决Passive mode refused(被动模式被拒绝)
这通常是因为配置文件里pasv_enable被设为了NO,或者被动模式需要的端口没在防火墙放行。
修改 vsftpd 配置
编辑/etc/vsftpd/vsftpd.conf:pasv_enable=YES pasv_min_port=60000 pasv_max_port=61000保存后重启服务:
sudo systemctl restart vsftpd。在防火墙放行端口
如果系统开了防火墙(firewalld),需要放行这些端口:sudo firewall-cmd --permanent --add-port=60000-61000/tcp sudo firewall-cmd --reload如果用的是 iptables 或 ufw,也请对应放行
60000-61000/tcp端口。
配置修改完成后,记得用sudo systemctl restart vsftpd重启服务让设置生效。
就个人使用情况而言,pluma/etc/vsftpd/vsftpd.conf,修改pasv_enable=YES即可成功解决。