# semanage login -lLogin 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>回退配置。