我想控制Linux-fedora中root的一些访问,例如我想运行一个进程,我希望root不能杀死它。
我使用 SELinux,并将根映射从 unconfined 更改为 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 - 从当前帐户启用),而我的当前帐户不能做我想做的事。
在我注册更改后,有人可以向我解释那里发生了什么吗?为什么我不能在这里达到我想要的?
感谢您的任何反馈!
你看错了方向。它有助于首先彻底了解 DAC 和 MAC 之间的区别。要点是MAC增强了DAC。这意味着 Linux 身份与 SELinux 身份不同,如果某些内容被 DAC 阻止,则 SELinux 无法覆盖它,但如果 DAC 允许某些内容,则 SELinux 仍可用于阻止访问。
实际上,仅仅因为您将 my_user Linux 身份与不会使 my_user 成为 root 的根 SELinux 身份相关联,因为从 DAC 的角度来看,my_user 仍然是 my_user。
然而反过来,如果你将 root Linux 身份与 guest_u SELinux 身份相关联,那么你就限制了 root 登录用户的权力,因为即使从 DAC 的角度来看,root 可能很强大,SELinux 仍然在这件事上拥有最后的发言权,而 guest_u SELinux 用户被设计为与来宾登录用户相关联(即从 MAC 角度来看很少有权限)
因此,首先检查 DAC,然后检查 MAC。MAC 不能允许 DAC 阻止的内容,但 MAC 可以阻止 DAC 允许的内容。
至于防止根拥有的进程访问信号其他进程。这不是我可以用几句话在这里概括的东西,但要点是安全属性与进程相关联,规则与安全属性相关联,默认情况下所有访问都被拒绝。因此,您必须将“标签”与您的进程相关联,然后使用这些标签和可用的 SELinux 访问向量来管理具有给定标签的进程如何交互或操作。