Linux下SElinux详解

1.SElinux 全称:Security-Enhanced Linux,灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中,仅                    集合最小权限访问,

2. 查看文件上下文: ls -Z 

[root@localhost ~]# ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

3.查看进程上下文: ps -auxZ 

[root@localhost ~]# ps -auxZ

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

LABEL   USER    PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

system_u:system_r:init_t:s0  root 1 0.0 0.1 19356 1552 ? Ss  Sep21 0:01 /sbin/init

system_u:system_r:kernel_t:s0 root 2  0.0  0.0 0  0 ?   S  Sep21 0:00 [kthreadd]

system_u:system_r:kernel_t:s0 root 3  0.0  0.0 0  0 ?   S  Sep21 0:00 [migration/0]

4.上下文解释

上下文一般分为3段,冒号分隔,依次为:用户(user) 角色(role) 类型(type)

例如:system_u:object_r:admin_home_t

system_u:用户

object_r:角色

admin_home_t:类型

5.Selinux设定方法:

5.1.getenforce #查看Selinux状态

5.2.setenforce 0 #设定Selinux为permissive 临时关闭selinux

 不受selinux控制,仅记录日志在/var/log/audit/audit.log 

5.3.setenforce 1 #设定Selinux为enforcing 临时开启selinux

 受selinux控制权限,并记录日志在/var/log/audit/audit.log

5.4.永久开启,关闭或禁用selinux方法: 必须重启后才能生效

[root@localhost ~]# vim /etc/sysconfig/selinux

以下3项只能选择一项:

SELINUX=enforcing 开启

SELINUX=permissive 关闭

SELINUX=disabled 禁用

6.进程所属的上下文类型,俗称为域

 文件所属的上下文类型,即称为类型

 Selinux开启的情况下,进程只能操作域类型与上下文类型一样的文件

6.1.修改上下文类型命令:

chcon -R -t 类型 文件或进程

-R 递归

-t 上下文类型

6.2.修改受selinux管理的服务开关,称为布尔值

6.2.1查看布尔值:

[root@localhost ~]# getsebool -a

6.2.2.设定布尔值

setsebool samba_enable_home_dirs=1

setsebool samba_enable_home_dirs=on

6.2.3.恢复默认上下文

restorecon /var/www/html

6.2.4.查看默认上下文类型

semanage fcontext -l

6.2.5.查看selinux用户映射关系 

semanage user -l

6.2.6.查看受selinux控制的端口 

semanage port -l 

6.2.7.将指定端口加入受selinux控制

semanage port -a -t http_port_t -p tcp 8060