SELinux笔记

参考文档

鸟哥的Linux私房菜 http://linux.vbird.org/linux_basic/0440processcontrol.php#selinux

SELinux Documentation https://www.nsa.gov/research/selinux/docs.shtml


enforcing / permissive

可以在/etc/sysconfig/selinux中设置SELinux的模式。
SELINUX=enforcing是强制模式,它会正常限制domain/type;
SELINUX=permissive是宽容模式,它不会实际限制存取,但会提醒警告信息;
也可以用

# setenforce 0

来临时配置,0是permissive, 1是enforcing。


sestatus

sestatus [-vb] 可以查看sestatus状态。

[root@vserver1 ~]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          permissive
Policy version:                 24
Policy from config file:        targeted

sestatus -b 查看当前bool值。


context

查看文件的context

# ll -Z

查看进程的context

# ps -Z

修改context

       chcon [OPTION]... CONTEXT FILE...
       chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
       chcon [OPTION]... --reference=RFILE FILE...

恢复默认context

# restorecon -Rv /var/www/html/index.html

setroubleshoot

setroubleshoot可以提供访问失败时的解决方法。
安装setroubleshoot之后,如果有文件被SELinux阻止了访问,那么/var/log/message下可以看到setroubleshoot的相关条目。

[root@www ~]# cat /var/log/messages | grep setroubleshoot
Mar 23 17:18:44 www setroubleshoot: SELinux is preventing the httpd from using 
potentially mislabeled files (/var/www/html/index.html). For complete SELinux 
messages. run sealert -l 6c028f77-ddb6-4515-91f4-4e3e719994d4
[root@www ~]# sealert -l 6c028f77-ddb6-4515-91f4-4e3e719994d4

Policy查询

[root@www ~]# seinfo [-Atrub]
-A 所有信息;
-t 列出type;
-r 列出role;
-u 列出user;
-b 列出boolean;

查询与设置boolean

[root@vserver1 ~]# getsebool -a
[root@vserver1 ~]# setsebool httpd_can_network_connect on

看有哪些context

/etc/selinux/targeted/contexts/