我想控制 Linux-fedora 中 root 的一些访问,例如,我想运行一个进程并且我希望 root 不能终止它。
我使用 SELinux,并将根映射从不受限制更改为 guest_u:
Login Name SELinux User MLS/MCS Range Service
root guest_u s0 *
另外,我将当前帐户更改为 root SELinux 用户模式。如下所示:
Login Name SELinux User MLS/MCS Range Service
my_user root s0-s0:c0.c1023 *
root guest_u s0 *
理论上,通过重新启动注册更改后,我的用户必须具有授予 root 权限,并且 root 必须无法执行许多操作和活动。但这并没有发生。我的 root 仍然可以做所有事情(通过 sudo su - 从当前帐户启用),而我的当前帐户无法做我想要做的事情。
有人能向我解释一下我注册变更后那里发生了什么吗?以及为什么我无法在这里得到我想要的东西?
感谢您的任何反馈!
答案1
您找错了方向。首先彻底了解 DAC 和 MAC 之间的区别会有所帮助。要点是 MAC 增强了 DAC。这意味着 Linux 身份与 SELinux 身份不同,如果某些内容被 DAC 阻止,则 SELinux 无法覆盖它,但如果某些内容被 DAC 允许,则 SELinux 仍可用于阻止访问。
实际上,仅仅因为您将 my_user Linux 身份与 root SELinux 身份关联,并不意味着 my_user 就是 root,因为从 DAC 角度来看,my_user 仍然是 my_user。
但是反过来,如果你将 root Linux 身份与 guest_u SELinux 身份关联起来,那么你就限制了 root 登录用户的权限,因为尽管从 DAC 的角度来看 root 可能很强大,但 SELinux 仍然对此事拥有最终决定权,而 guest_u SELinux 用户被设计为与来宾登录用户相关联(即从 MAC 的角度来看权限非常小)
因此,首先检查 DAC,然后检查 MAC。MAC 不能允许 DAC 阻止的内容,但 MAC 可以阻止 DAC 允许的内容。
至于预防 root 拥有的进程访问向其他进程发出信号。我无法用几句话来概括,但要点是安全属性与进程相关联,规则与安全属性相关联,默认情况下所有访问都被拒绝。因此,您必须将“标签”与您的进程相关联,然后使用这些标签和可用的 SELinux 访问向量来控制具有给定标签的进程如何交互或运行。