我最近遇到了 SELinux 和sudo
。是否可以sudo
在 SELinux 宽松时允许用户,而在 SELinux 强制执行时阻止某些用户而允许其他用户?
我看过部分3.9. 使用 sudo 和 sysadm_r 角色限制管理员 RedHat 使用 SELinux,我知道可以授予某人sysadm_r
sudo 访问权限。但是,如何根据 SELinux 是强制的还是宽容的来拒绝某些用户?
答案1
SELinux 策略在一系列规则中使用这些上下文,这些规则定义了进程如何相互交互以及与各种系统资源交互。默认情况下,除非规则明确授予访问权限,否则该策略不允许任何交互。
因此,您需要查找现有的默认/添加的策略,如果它允许用户使用,则将其删除sudo
,然后您可以添加您想要的用户。
答案2
将 bob 和 alice 添加到staff_u
:
# semanage login -l
Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
alice staff_u s0-s0:c0.c1023 *
bob staff_u s0-s0:c0.c1023 *
在 sudoers 文件中添加以下内容:
alice ALL=(ALL) TYPE=staff_t ROLE=staff_r ALL
bob ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
现在,如果强制执行 SELinux,则只bob
允许运行。alice
在允许的情况下才允许运行:
[alice@vm ~]$ getenforce
Enforcing
[alicevm ~]$ sudo su
[sudo] password for alice:
su: avc.c:74: avc_context_to_sid_raw: Assertion `avc_running' failed.
Aborted
[alice@vm ~]$ getenforce
Permissive
[alice@vm ~]$ sudo su
[root@vm alice]#