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 策略添加错误,切换到 - permissiveSELinux 模式,这有助于进行故障排除:- setenforce 0 - # setenforce 0- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 请注意,在 permissive 模式中,SELinux 不强制执行活跃策略,而是只记录 Access Vector Cache (AVC)信息,然后可用于故障排除和调试。 
- 为 - staff_uSELinux 用户定义清晰的范围。例如,这个命令会将安全权限范围设置为- s1到- s15,- s1是默认的安全权限级别:- semanage user -m -L s1 -r s1-s15 staff_u - # semanage user -m -L s1 -r s1-s15 staff_u- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为用户主目录生成 SELinux 文件上下文配置条目: - genhomedircon - # genhomedircon- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将文件安全上下文恢复到默认值: - restorecon -R -F -v /home/ - # 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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为用户分配安全权限级别: - semanage login -m -r s1 example_user - # semanage login -m -r s1 example_user- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 其中 - s1是分配给用户的安全权限级别。
- 将用户的主目录重新标记到用户的明确级别: - chcon -R -l s1 /home/example_user - # chcon -R -l s1 /home/example_user- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:如果您之前切换到 - permissiveSELinux 模式,并在验证所有内容可以正常工作后,切换回- enforcingSELinux 模式:- setenforce 1 - # setenforce 1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 验证用户是否已映射到正确的 SELinux 用户,并分配了正确的级别: - semanage login -l - # semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ user_u s0-s0 * example_user user_u s1 * …- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以 MLS 内的用户身份登录。
- 验证用户的安全级别是否正常工作: 警告- 如果配置不正确,您用于验证的文件不应包含任何敏感信息,并且用户实际上可以访问未经授权的文件。 - 验证用户无法读取具有更高级别敏感性的文件。
- 验证用户可以写入具有相同敏感级别的文件。
- 验证用户可以读取具有较低级别的敏感性的文件。