查看文件和目录上下文ls -Z
unconfined_u:object_r:user_home_t:s0
查看进程上下文ps auxZ | grep sshd
system_u:system_r:sshd_t:s0-s0:c0.c1023 root 4471 0.0 0.1 10936 6428 ? Ss 15:08 0:03 sshd: root@pts/0
只要进程和文件的安全上下文匹配,该进程就可以访问该文件资源。
字段解析
使用“:”分隔为 4 个字段,其实共有 5 个字段,只是最后一个“类别”字段是可选的,例如:
unconfined_u:object_r:user_home_t:s0:[类别]
身份字段:角色:类型:灵敏度:[类别]
身份字段(user)
用于标识该数据被哪个身份所拥有,相当于权限中的用户身份。user 字段只用于标识数据或进程被哪个身份所拥有,一般系统数据的 user 字段就是 system_u,而用户数据的 user 字段就是 user_u。
常见的身份类型有一下3种:
- root:表示安全上下文的身份是 root。
- system_u:表示系统管理员用户身份,其中“_u”代表 user。
- user_u:表示与一般用户账号相关的身份,其中“_u”代表 user。
查询系统中所有的用户身份字段
seinfo -u
角色字段(role)
主要用来表示此数据是进程还是文件或目录。这个字段在实际使用中也不需要修改。
常见的角色有以下两种:
- object_r:代表该数据是文件或目录,这里的“_r”代表 role。
- system_r:代表该数据是进程,这里的“_r”代表 role。
查询系统中所有的角色字段:
seinfo -r
类型(type)
类型字段是安全上下文中最重要的字段,进程是否可以访问文件,主要就是看进程的安全上下文类型字段是否和文件的安全上下文类型字段相匹配,如果匹配则可以访问。
查询系统中所有的类型字段:
seinfo -t
灵敏度字段
灵敏度一般是用 s0、s1、s2 来命名的,数字代表灵敏度的分级。数值越大,代表灵敏度越高。
类别字段
类别字段不是必须有的,所以我们使用 ls 和 ps 命令查询的时候并没有看到类别字段。
查询系统中所有的类别字段:
seinfo -u -x
查询字段命令
seinfo [option]
option:
- -u: 列出SELinux中所有的身份(user);
- -r: 列出SELinux中所有的角色(role);
- -t: 列出SELinux中所有的类型(type);
- -b: 列出所有的布尔值(也就是策略中的具体规则名称);
- -x: 显示更多的信息;