原文:http://hi.baidu.com/ma95221/blog/item/c779741137cc121bb8127b4f.html
系统是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
或者
# setsebool -P ftp_home_dir 1
# service vsftpd restart
有关selinux的配置
如关闭,仅仅警告,强制等等 需要编辑/etc/sysconfig/selinux 默认是强制
查看当前SELinux设置和状态
- sestatus命令
# 当前SELinux开启设为启动,permissive模式,在当前状态下,可以使用setenforce 1改变为enforcing模式
[root@CentOS5 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: disabled
Policy version: 21
Policy from config file: targeted
- 上面的输出是CentOS5中的,这里说明一下,sestatus这个命令在CentOS4/RHEL4(policycoreutils-1.18)和CentOS5/RHEL5(policycoreutils-1.33)中的默认输出不一样,在旧版本中,默认会同时输出详细的规则布尔值,而在新版本中默认不输出,使用-b开关可以打印这些布尔值,下面是旧版本(policycoreutils-1.18)中的输出样例
- [root@CentOS4 ~]# sestatus使用getenforce也可以查看当前状态
- 设置和修改SELinux状态
- setenforce
setenforce 1 # 设定selinux模式为enforcing
setenforce 0 # 设定selinux模式为permissive
# 注:当前SElinux为Disabled状态时,setenforce会执行失败,并警告:"setenforce: SELinux is disabled"
修改/etc/sysconfig/selinux:这个文件决定了系统启动时是否启用SELinux以及启动的模式
posted on 2010-01-18 22:59
Documents 阅读(3657)
评论(0) 编辑 收藏 所属分类:
Linux 、
CentOS