在RHEL6平台下的多数生产线上的FTP应用基本很少开启SeLinux,因为这玩意实在太麻烦了。这里给出一个小案例,基于RHEL 6.3平台。
系统状态:
RedHad Enterprises Linux 6.3 32bit
SeLinux - Enforcing
iptables - disabled (这个开启端口其实很简单,本案例中就不讨论了)
1.安装略(yum -y install vsftpd)
2.默认启动以及测试
这里说明下,就是安装之后,直接启动vsftpd,不修改任何参数,普通用户是可以登陆并且上传下载的,当然是vsftp的默认情况,但是SeLinux存在就不这么默认了。先要开启:
[root@localhost cto.luxiaok.com]# setsebool -P ftp_home_dir=on
否则会报无法切换目录的500错误。其实,vsftp的默认情况允许本地用户登录并且允许上传下载是很危险,因为可以切换到别的目录去,当然是默认情况下。这当然也是可以通过vsftpd.conf进行控制的。
3.开启匿名用户的上传下载
这是本文的主题。再来说说默认情况,默认修改vsftpd.conf的情况下只允许匿名用户进行登录并允许下载,不允许上传。
允许匿名上传设置:
取消上面两行的注释就行了,然后重启vsftpd。这里也可以注释掉local_enable来禁用掉本地用户的登陆。
但是会发现还是无法上传。
首先
[root@luxiaok.com ~]# chmod -R 777 /var/ftp/pub
非常重要的一点,这里不能更改/var/ftp的权限,否则在匿名用户登陆的是就会直接500错误,这是vsftp的默认机制。这里的上传以pub目录为例。
然后
[root@localhost cto.luxiaok.com]# setsebool -P allow_ftpd_anon_write=on
再进行测试,就OK了。