我曾经写过两篇日志,都是关于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
@Lee
元旦快乐啊!
哎呀,最近招人头痛死了。
😀 现在合适的人员的确很难找。
除夕咯,祝新年里工作顺利,身体健康,龙年大吉。
是啊,现在应该回日本了吧 ,有没有吃饺子呢? 😆 也祝你新年快乐,大吉大利。
恩,在日本呢。昨天吃烤肉的地方有,为中国人准备的,哈哈
:)元旦顺利,新年健康顺利发大财,以后给我介绍工作,哈哈