6.4. 在 MLS 中建立用户明确
将 SELinux 策略切换到 MLS 后,必须通过将 SELinux 策略映射到受限的 SELinux 用户来为用户分配安全清晰级别。默认情况下,具有给定安全许可的用户:
- 不能读取具有更高敏感度级别的对象。
- 无法写入具有不同敏感度级别的对象。
先决条件
-
SELinux 策略被设置为
mls
。 -
SELinux 模式设置为
enforcing
。 -
已安装
policycoreutils-python-utils
软件包。 分配给 SELinux 受限用户的用户:
-
对于非授权用户,分配给
user_u
(以下流程中的example_user )。 -
对于特权用户,分配给
staff_u
(以下流程中的 staff )。
-
对于非授权用户,分配给
确保 MLS 策略处于活动状态时已创建该用户。MLS 中无法使用在其他 SELinux 策略中创建的用户。
步骤
可选:要防止向 SELinux 策略添加错误,切换到
permissive
SELinux 模式,这有助于进行故障排除:# setenforce 0
请注意,在 permissive 模式中,SELinux 不强制执行活跃策略,而是只记录 Access Vector Cache (AVC)信息,然后可用于故障排除和调试。
为
staff_u
SELinux 用户定义清晰的范围。例如,这个命令会将安全权限范围设置为s1
到s15
,s1
是默认的安全权限级别:# semanage user -m -L s1 -r s1-s15 staff_u
为用户主目录生成 SELinux 文件上下文配置条目:
# genhomedircon
将文件安全上下文恢复到默认值:
# restorecon -R -F -v /home/ Relabeled /home/staff from staff_u:object_r:user_home_dir_t:s0 to staff_u:object_r:user_home_dir_t:s1 Relabeled /home/staff/.bash_logout from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bash_profile from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1 Relabeled /home/staff/.bashrc from staff_u:object_r:user_home_t:s0 to staff_u:object_r:user_home_t:s1
为用户分配安全权限级别:
# semanage login -m -r s1 example_user
其中
s1
是分配给用户的安全权限级别。将用户的主目录重新标记到用户的明确级别:
# chcon -R -l s1 /home/example_user
可选:如果您之前切换到
permissive
SELinux 模式,并在验证所有内容可以正常工作后,切换回enforcing
SELinux 模式:# setenforce 1
验证
验证用户是否已映射到正确的 SELinux 用户,并分配了正确的级别:
# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ user_u s0-s0 * example_user user_u s1 * …
- 以 MLS 内的用户身份登录。
验证用户的安全级别是否正常工作:
警告如果配置不正确,您用于验证的文件不应包含任何敏感信息,并且用户实际上可以访问未经授权的文件。
- 验证用户无法读取具有更高级别敏感性的文件。
- 验证用户可以写入具有相同敏感级别的文件。
- 验证用户可以读取具有较低级别的敏感性的文件。