在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存在就不这么默认了。先要开启:

 
  
  1. [root@localhost cto.luxiaok.com]# setsebool -P ftp_home_dir=on 

     否则会报无法切换目录的500错误。其实,vsftp的默认情况允许本地用户登录并且允许上传下载是很危险,因为可以切换到别的目录去,当然是默认情况下。这当然也是可以通过vsftpd.conf进行控制的。
3.开启匿名用户的上传下载
    这是本文的主题。再来说说默认情况,默认修改vsftpd.conf的情况下只允许匿名用户进行登录并允许下载,不允许上传。
    允许匿名上传设置:

   

    取消上面两行的注释就行了,然后重启vsftpd。这里也可以注释掉local_enable来禁用掉本地用户的登陆。
    但是会发现还是无法上传。
    首先

 
  
  1. [root@luxiaok.com ~]# chmod -R 777 /var/ftp/pub 

    非常重要的一点,这里不能更改/var/ftp的权限,否则在匿名用户登陆的是就会直接500错误,这是vsftp的默认机制。这里的上传以pub目录为例。
    然后

 
  
  1. [root@localhost cto.luxiaok.com]# setsebool -P allow_ftpd_anon_write=on 

    再进行测试,就OK了。
    这里只是一个很简单的案例,不过多解释SeLinux的相关知识了。

    在6.3的64位平台下的测试出现了点问题,主要终于SeLinux,需要开启

 
  
  1. setsebool -P allow_ftpd_full_access on 

    另外,从6.0到6.4的平台都还是有细微的差别,主要是针对SeLinux。不过在生产线上的应用还是比较少涉及到SeLinux的。