原因
CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。
方法1
关闭selinux,修改/etc/selinux/config文件或/etc/syscofnig/selinux设置SELINUX= disabled ,然后重启服务器
方法2
由于方法1需要重启服务器,而当时我们是在生产集群中出现的问题,服务器上还有其他服务,不便于重启服务器,所以就查找了别的方法。
[root@localhost]# 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
httpd_enable_ftp_server --> off
tftp_anon_write --> off
只要把allow_ftpd_full_access --> off,ftp_home_dir --> off改为on就可以了。
[root@localhost ]# setsebool -P ftp_home_dir on
[root@localhost ]# setsebool -P allow_ftpd_full_access on
最后重启vsftpd服务
service vsftpd restart
扩展
SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
getsebool命令
是用来查询SElinux策略内各项规则的布尔值。
语法
getsebool [-a] [布尔值条款]
选项
-a:列出目前系统上面的所有布尔值条款设置为开启或关闭值。
setsebool命令
setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。
语法
setsebool [-P] 布尔值=[0|1]
选项
-P:直接将设置值写入配置文件,该设置数据将来会生效的。