在CentOS7中,安装配置好vsftpd后
/etc/vsftpd/vsftpd.conf内容如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
pasv_enable=YES
pasv_min_port=50250
pasv_max_port=50254
采用添加的系统注册用户登录,仍然无法下载文件,错误信息为:
550 Failed to open file.
解决方法
系统是CentOS,是RH派系的。把vsftpd安装配置好了,以为大功告成,但客户端访问提示如下错误:
500 OOPS: cannot change directory:/home/ftp
原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。
//查看SELinux设置
# getsebool -a|grep ftp
ftpd_disable_trans --> off
或者
ftp_home_dir-->off
解决方法:
//使用setsebool命令开启
# setsebool ftpd_disable_trans 1
或者
# setsebool ftp_home_dir 1
再次查看当前状态是否是on的状态
# getsebool -a|grep ftp
ftpd_disable_trans --> on
或者
ftp_home_dir-->on
//setsebool使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1 (我的centos7系统中没有ftpd_disable_trans的定义,故这个不行)
或者
# setsebool -P ftp_home_dir 1 (这个在我的centos7上可行,就是运行了这个之后,重启vsftpd服务,然后就可以正常下载了)
# service vsftpd restart
有关selinux的配置
如关闭,仅仅警告,强制等等 需要编辑/etc/sysconfig/selinux 默认是强制