SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。
1、setinfo命令
-a:列出该类型或布尔值的所有相关信息
-t:后面还要接类型,例如 -t httpd_t
-b:后面还要接布尔值的规则,例如 -b httpd_enable_ftp_serve
列出与httpd有关的规则:
setinfo -b |grep httpd
2、sesearch命令
sesearch [-a] [-s 主体类型] [-t 目标类型] [-b 布尔值]
-t:列出SELinux所有类型
-r:列出SELinux所有角色(role)的种类。
-u:列出SELinux所有身份识别(user)的种类。
-b:列出所有规则的种类(布尔值)。
找出目标文件资源类型为httpd_sys_content_t的有关信息:
sesearch -a -t httpd_sys_conten_t
找出主体进程为httpd_t且目标文件类型为httpd相关的所有信息
sesearch -s httpd_t -t httpd_* -a
3、getsebool命令
getsebool [-a] [布尔值条款]
-a:列出目前系统上面的所有布尔值条款设置为开启或关闭值。
getsebool -a NetworkManager_disable_trans --> off allow_console_login --> off allow_cvs_read_shadow --> off allow_daemons_dump_core --> on ....(底下省略)....
getsebool httpd_enable_homedirs setsebool -P httpd_enable_homedirs=0 //0是关闭 1是开启
4、setsebool命令
setsebool [-P] 布尔值=[0|1]
-P:直接将设置值写入配置文件,该设置数据将来会生效的。
setsebool -P allow_ftpd_anon_write=1
setsebool -P ftp_home_dir 1
setsebool -P ftpd_is_daemon 1
setsebool -P httpd_enable_cgi 1
setsebool -P httpd_enable_homedirs 1 chcon -R -t httpd_sys_content_t ~user/public_html
setsebool -P httpd_tty_comm 1
setsebool -P httpd_disable_trans 1 service httpd restart
setsebool -P named_write_master_zones 1
setsebool -P named_disable_trans 1 service named restart
setsebool -P nfs_export_all_ro 1
setsebool -P nfs_export_all_rw 1
setsebool -P use_nfs_home_dirs 1
setsebool -P allow_smbd_anon_write=1
setsebool -P samba_enable_home_dirs 1
setsebool -P use_samba_home_dirs 1
setsebool -P smbd_disable_trans 1 service smb restart
setsebool -P allow_rsync_anon_write=1
setsebool -P rsync_disable_trans 1
setsebool -P allow_ypbind 1
5、semanage命令
semanage {login|user|port|interface|fcontext|translation} -l semanage fcontext -{a|d|m} [-frst] file_spec
--l:查询。 fcontext:主要用在安全上下文方面。 -a:增加,你可以增加一些目录的默认安全上下文类型设置。 -m:修改。 -d:删除。
semanage fcontext -l SELinux fcontext type Context ....(前面省略).... /var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 ....(後面省略)....
如上面例子所示,我们可以查询的到每个目录的安全性本文!而目录的设定可以使用正则表达式去指定一个范围。那么如果我们想要增加某些自定义目录的安全性本文呢?举例来说,我想要色设置/srv/samba成为public_content_t内联代码的类型时,应该如何设置呢?
chcon -t public_content_rw_t /var/ftp/incoming
mkdir /srv/samba ll -Zd /srv/samba drwxr-xr-x root root root:object_r:var_t /srv/samba
semanage fcontext -l | grep '/srv' /srv/.* all files system_u:object_r:var_t:s0 /srv/([^/]*/)?ftp(/.*)? all files system_u:object_r:public_content_t:s0 /srv/([^/]*/)?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 /srv/([^/]*/)?rsync(/.*)? all files system_u:object_r:public_content_t:s0 /srv/gallery2(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 /srv directory system_u:object_r:var_t:s0 //看这里!
semanage fcontext -a -t public_content_t "/srv/samba(/.*)?" semanage fcontext -l | grep '/srv/samba' /srv/samba(/.*)? all files system_u:object_r:public_content_t:s0
cat /etc/selinux/targeted/contexts/files/file_contexts.local # This file is auto-generated by libsemanage # Please use the semanage command to make changes /srv/samba(/.*)? system_u:object_r:public_content_t:s0 #写入这个档案
restorecon -Rv /srv/samba* #尝试恢复默认值 ll -Zd /srv/samba drwxr-xr-x root root system_u:object_r:public_content_t /srv/samba/ #有默认值,以后用restorecon命令来修改比较简单!