我曾经写过两篇日志,都是关于SELinux的安全设置问题,请参考:
我们到底该不该使用SELinux?
关于SELINUX的权限问题
前两天,一同事去现场给客户部署系统,装好RHEL5.6之后,发现ftp和http都连不上,但是服务器的启动和服务状态都正常,ftp的返回结果是
500 OOPS: cannot change directory:/home/userDir
我再让他查看下权限、登陆的用户等,这些都没有问题,然后我问他,SELinux的状态是什么样的?他说是打开的,我就知道是这个问题了,在这些版本之后,默认SELinux都对网络操作本地文件系统做了很严格的控制,我觉得有必要在说一说这些东西。
首先是两个命令,getsebool和setsebool,从名字上面就可以知道,这是设置SELinux相关配置的开关(布尔值),那就说明各项开关的作用就行了。
//
用此命令即可查询对应的SELinux开放情况
[root@rhel6 www]
# getsebool -a |grep httpd
allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
{
ftp
}
//
打开Anonymous文件共享
chcon -R -t public_content_t
/var/ftp
//
设置一个可以上传文件的文件夹
chcon -t public_content_rw_t
/var/ftp/incoming
//
同时需要打开allow_ftpd_anon_write
setsebool -P allow_ftpd_anon_write=1
//
设置用户可以访问家目录
setsebool -P ftp_home_dir 1
//
以镜像方式运行
ftp
服务器
setsebool -P ftpd_is_daemon 1
//
彻底关闭SELinux对FTP的保护
setsebool -P ftpd_disable_trans 1
{httpd}
//
特定的域写入权限
setsebool -P allow_httpd_anon_write=1
//
或者
setsebool -P allow_httpd_sys_script_anon_write=1
//
打开http 的cgi功能
setsebool -P httpd_enable_cgi 1
//
打开http访问用户家目录
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user
/public_html
//
运行http登陆终端
setsebool -P httpd_tty_comm 1
//
打开http服务互不干扰
setsebool -P httpd_unified 0
//
可装载模块作为http服务在同样的context下服务
setsebool -P httpd_builtin_scripting 0
//
打开http脚本访问网络
setsebool -P httpd_can_network_connect 1
//
禁用suexec传输
setsebool -P httpd_suexec_disable_trans 1
//
停止SELinux对httpd的保护
setsebool -P httpd_disable_trans 1
service httpd restart
{named}
//
打开更新主域
setsebool -P named_write_master_zones 1
//
停止SELinux对named的保护
setsebool -P named_disable_trans 1
service named restart
{nfs}
//
设置nfs为只读
setsebool -P nfs_export_all_ro 1
//
设置nfs可写
setsebool -P nfs_export_all_rw 1
//
打开nfs家目录访问
setsebool -P use_nfs_home_dirs 1
{samba}
//
打开另外的目录共享
chcon -t samba_share_t
/directory
//
打开多域共享
setsebool -P allow_smbd_anon_write=1
//
将服务器设置成samba服务器,并允许家目录共享
setsebool -P samba_enable_home_dirs 1
//
用其他samba服务器共享本机的家目录
setsebool -P use_samba_home_dirs 1
//
停止SELinux对samba的保护
setsebool -P smbd_disable_trans 1
service smb restart
{
rsync
}
//
打开
rsync
共享
chcon -t public_content_t
/directories
//
打开多域共享
setsebool -P allow_rsync_anon_write=1
//
停止SELinux对
rsync
的保护
setsebool -P rsync_disable_trans 1
{kerberos}
//
打开kerberos
setsebool -P allow_kerberos 1
//
以 kadmind 或 krb5kdc 方式运行
setsebool -P krb5kdc_disable_trans 1
service krb5kdc restart
setsebool -P kadmind_disable_trans 1
service kadmind restart
{nis}
//
打开nis支持
setsebool -P allow_ypbind 1
看完这些,就应该知道大概怎么设置SELinux了,这里只列出经常要用的。
具体请参考:http://linux.die.net/man/8/setsebool