RHEL中SELinux与wheel组的权限配置问题

本文详细探讨了在RedHat Enterprise Linux 9中配置wheel组用户使用sudo时SELinux上下文提升的问题,包括角色类型配置和错误解决方案,涉及sysadm_u用户和sysadm_r角色的正确设置方法。

wheel组与SELinux配置问题

问题描述

我尝试在RedHat 9中当管理员使用sudo命令时提升SELinux上下文,但配置未能生效。根据Redhat知识库,我需要将"default"改为sysadm_u,并在/etc/sudoers中添加以下配置:

1
%wheel ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL

当前配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# semanage login -l
Login Name           SELinux User         MLS/MCS Range        Service
%wheel               sysadm_u             s0-s0:c0.c1023       *
__default__          sysadm_u             s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *

# grep wheel /etc/sudoers
## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
# %wheel        ALL=(ALL)       NOPASSWD: ALL
%wheel ALL=(ALL)       TYPE=sysadm_t ROLE=sysadm_r ALL

问题现象

尽管进行了上述配置,我的规则仍然显示为unconfined_r:

1
2
$ id
uid=1000(garnet) gid=1000(garnet) groups=1000(garnet),10(wheel) context=sysadm_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

尝试使用sudo时出现错误:

1
2
3
$ sudo ls /root
[sudo] password for garnet: 
sudo: sysadm_u:sysadm_r:sysadm_t:s0-s0:c0.c1023 is not a valid context

解决方案

在安装过程中,某个安装脚本调用了:

1
semanage user -m sysadm_u -R system_r -R unconfined_r

通过执行以下命令修正问题:

1
semanage user -m sysadm_u -R sysadm_r

SELinux角色和类型参考

角色 类型 X Window登录 su或sudo 在home和/tmp执行 网络功能
unconfined_r unconfined_t
sysadm_r sysadm_t 仅当xdm_sysadm_login布尔值为on时

用户默认角色映射

用户 默认角色 附加角色
unconfined_u unconfined_r system_r
sysadm_u sysadm_r -
root staff_r sysadm_r,unconfined_r,system_r

注意事项

  • system_u是系统进程和对象的特殊用户标识
  • system_r是相关角色
  • 管理员永远不应将system_u用户和system_r角色关联到Linux用户
  • 在干净的RHEL-8.10系统中,默认的semanage login输出为:
1
2
3
4
semanage login -l
Login Name           SELinux User         MLS/MCS Range        Service
__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *

修改__default__配置可能会遇到问题,建议使用semanage login -a -u sysadmin_u <username>添加特定用户配置,如果无效则使用semanage -d <username>回退配置。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计