6.8. 在 MLS 中将系统管理与安全管理分离
				默认情况下,sysadm_r 角色具有 secadm_r 角色的权限,这意味着具有 sysadm_r 角色的用户可以管理安全策略。如果需要对安全授权进行更多控制,您可以通过将 Linux 用户分配给 secadm_r 角色并在 SELinux 策略中禁用 sysadm_secadm 模块将系统管理与安全管理分开。
			
先决条件
- 
						SELinux 策略被设置为 mls。
- 
						SELinux 模式设置为 enforcing。
- 
						已安装 policycoreutils-python-utils软件包。
- 分配给 - secadm_r角色的 Linux 用户:- 
								该用户被分配给 staff_uSELinux 用户
- 定义了此用户的密码。
 警告- 确保您可以以用户 身份登录,这将分配给 - secadm角色。如果不能,您可以防止以后修改系统的 SELinux 策略。
- 
								该用户被分配给 
步骤
- 为用户在 - /etc/sudoers.d目录中创建一个新的- sudoers文件:- visudo -f /etc/sudoers.d/<sec_adm_user> - # visudo -f /etc/sudoers.d/<sec_adm_user>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 为保持 - sudoers文件的组织,请- <sec_adm_user>替换为将分配给- secadm角色的 Linux 用户。
- 在 - /etc/sudoers.d/<sec_adm_user>文件中添加以下内容:- <sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALL - <sec_adm_user> ALL=(ALL) TYPE=secadm_t ROLE=secadm_r ALL- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 此行授权所有主机上的 - <sec_adm_user> 执行所有命令,并将用户映射到- secadmSELinux 类型和角色。
- 以 <sec_adm_user> 用户身份登录。 - 要确保 SELinux 上下文(由 SELinux 用户、角色和类型组成)已更改,请使用 - ssh、控制台或- xdm登录。- su和- sudo等其他方法无法更改整个 SELinux 上下文。
- 验证用户的安全上下文: - id - $ id uid=1000(<sec_adm_user>) gid=1000(<sec_adm_user>) groups=1000(<sec_adm_user>) context=staff_u:staff_r:staff_t:s0-s15:c0.c1023- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为 root 用户运行交互式 shell: - sudo -i - $ sudo -i [sudo] password for <sec_adm_user>:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证当前用户的安全上下文: - id - # id uid=0(root) gid=0(root) groups=0(root) context=staff_u:secadm_r:secadm_t:s0-s15:c0.c1023- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 从策略中禁用 - sysadm_secadm模块:- semodule -d sysadm_secadm - # semodule -d sysadm_secadm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- 使用 - semodule -d命令,而不是使用- semodule -r命令删除系统策略模块。- semodule -r命令从您的系统存储中删除模块,这意味着无法重新安装- selinux-policy-mls软件包。
验证
- 作为分配给 - secadm角色的用户,并在 root 用户的交互式 shell 中验证您可以访问安全策略数据:- seinfo -xt secadm_t - # seinfo -xt secadm_t Types: 1 type secadm_t, can_relabelto_shadow_passwords, (…) userdomain;- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 从 root shell 注销: - logout - # logout- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 登出 - <sec_adm_user>用户:- logout - $ logout Connection to localhost closed.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 显示当前安全上下文: - id - # id uid=0(root) gid=0(root) groups=0(root) context=root:sysadm_r:sysadm_t:s0-s15:c0.c1023- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 尝试启用 - sysadm_secadm模块。该命令应该失败:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 尝试显示有关 - sysadm_tSELinux 类型的详情。该命令应该失败:- seinfo -xt sysadm_t - # seinfo -xt sysadm_t [Errno 13] Permission denied: '/sys/fs/selinux/policy'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow