安装配置好vsftpd服务器后,FTP上传文件报错:
1. 451 Failure writing to local file
检查发现是磁盘满了。du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录 /var/spool/clientmqueue。搜索发现 /var/spool/clientmqueue 是因为系统定时服务cron的输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。
解决方法:在cron的自动执行语句后加上 >/dev/null 2>&1
crontab -e
4 3 * * * /usr/bin/w > /dev/null 2>&1
清除 /var/spool/clientmqueue目录文件太多,rm -rf *时候会提示:"-bash: /bin/rm: Argument list too long.."
意思是参数太长,rm 干不了。执行命令 ls | xargs rm -f 可正常执行
2. 新建ftp用户
useradd -d /home/ftp -s /sbin/nologin ftpuser #新建ftp账号
passwd ftpuser #设置账号密码
3. 500 OOPS:vsftpd: refusing to run with writable root inside chroot
如果启用chroot,然后用户根目录可写,新版本的vsftpd则会报上述错误。
#/etc/vsftpd.conf #启用chroot,锁定用户主目录,不允许用户切换目录 chroot_local_user=YES #限制用户只能在/home/user下访问 chroot_list_enable=YES #是否启动用户限制名单 chroot_list_file=/etc/vsftpd.chroot_list #配置在vsftpd.chroot_list中的用户可以切换目录 local_root=/var/ftp #用户登录后默认目录
解决方案:
方法一:直接添加用户账号至 /etc/vsftpd.chroot_list
方法二:
如果没有配置local_root,则只需要设置用户主目录不可写
chmod a-w /home/ftpa
当配置local_root后,发现改变去除用户写权限后,仍然报上述错误。此时还需去除/var/ftp写权限
chmod a-w /var/ftp
登录后正常,虽说只能访问/var/ftp目录,却不能上传文件。可在/var/ftp下新建一个可读写的新目录,直接将文件上传到该目录。
4. 425 Security: Bad IP connecting
vsftpd.conf 最后添加:
pasv_promiscuous=YES
关闭PASV模式的安全检查。
5. OOPS: cannot change directory:/home/ftp
该错误是由于SELinux安全策略引起的。
[centos@xxx home]$ getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_fusefs --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off tftp_use_cifs --> off tftp_use_nfs --> off
可见ftp_home_dir 默认为off, 设置为on即可。
setsebool ftpd_disable_trans 1
系统版本不同时,上述命令可能会报错:Boolean ftpd_disable_trans is not defined,更换命令:
setsebool ftp_home_dir 1
7. 553 Could not create file
检查FTP目录权限,chmod 777 ftp
如果仍然出问题,设置SELinux安全策略:
setsebool -P ftpd_disable_trans 1
8. 227 Entering Passive Mode
ftp连接上服务器后,运行命令ls,报上述错误,一直止住不动。
解决方法,在vsftpd.conf 中配置外网IP即可。
pasv_address=xxx
9. FTP验证很慢,卡住
vi vsftpd.conf
reverse_lookup_enable=NO #关闭DNS反向解析