Menu Close
3.7. 使用 sudo 和 sysadm_r 角色限制管理员
您可以将具有管理权限的特定用户映射到 staff_u
SELinux 用户,并配置 sudo
,以便用户获取 sysadm_r
SELinux 管理员角色。这个角色允许用户在不拒绝 SELinux 的情况下执行管理任务。当用户登录时,会话会在 staff_u:staff_r:staff_t
SELinux 上下文中运行,但当用户使用 sudo
进入命令时,会话会更改为 staff_u:sysadm_r:sysadm_t
上下文。
默认情况下,Red Hat Enterprise Linux 中的所有 Linux 用户(包括管理权限的用户)都会映射到无限制的 SELinux 用户 unconfined_u
。您可以通过将用户分配给受 SELinux 限制的用户来提高系统安全性。这对遵守 V-71971 安全技术实施指南非常有用。
先决条件
-
root
用户运行没有限制。这是 Red Hat Enterprise Linux 的默认设置。
步骤
创建新用户,将用户添加到
wheel
用户组,并将用户映射到staff_u
SELinux 用户:# adduser -G wheel -Z staff_u example.user
可选:将现有用户映射到
staff_u
SELinux 用户,并将用户添加到wheel
用户组:# usermod -G wheel -Z staff_u example.user
要允许 example.user 获取 SELinux 管理员角色,请在
/etc/sudoers.d/
目录中创建新文件,例如:# visudo -f /etc/sudoers.d/example.user
在新文件中添加以下行:
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
验证
检查
example.user
是否已映射到staff_u
SELinux 用户:# semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *
以 example.user 身份登录,例如使用 SSH 并切换到
root
用户:[example.user@localhost ~]$ sudo -i [sudo] password for example.user:
显示
root
安全上下文:# id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
尝试管理任务,例如重启
sshd
服务:# systemctl restart sshd
如果没有输出结果,则代表命令可以成功完成。
如果该命令没有成功完成,它会输出以下信息:
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.