我可以创建一个*超级*超级用户,这样我实际上就可以拥有一个可以拒绝 root 权限的用户吗?

我可以创建一个*超级*超级用户,这样我实际上就可以拥有一个可以拒绝 root 权限的用户吗?

我认为拥有比 root 用户更高权限的用户可能会更有利。

你看,我想保留所有的活动和几乎所有现有的 root 用户权限与现在完全相同。

然而,我希望能够在极其孤立的情况下拒绝 root 权限。

这样做的优点之一是可以防止在更新过程中安装某些不需要的文件。这只是一个可能的优势的示例。

由于 apt-get 更新是由 root 或使用 sudo 权限运行的,因此 apt-get 能够在更新期间替换某些不需要的文件。

如果我可以拒绝这些单独的特定文件的这些权限,我可以将它们设置为 simlink,/dev/null或者可能有一个空白占位符文件,该文件可能具有拒绝文件在更新期间被替换的权限。

此外,我不禁想起了在接受一位 Ubuntu 创建者采访时所说的一句话,当时他谈到用户如何更好地信任“我们”(指 Ubuntu 开发者)“因为我们有 root 权限” ”这是关于如何在 root 权限下执行系统更新的参考。

简单地改变安装过程来解决这个问题绝对不是我感兴趣的。既然我的想法已经尝到了拥有拒绝 root 访问权限的想法,我想找出一种方法来实现这一点,只是为了这样做。

我只是想到了这个问题,到目前为止还没有花任何时间在这个想法上,我相当有信心可以解决这个问题。然而,我很想知道这是否已经完成,或者这是否可能不是一个新的想法或概念。

基本上,似乎应该有某种方式来拥有一个超级超级用户,该超级用户的权限仅超出系统一级。


注意:虽然我觉得接受的答案最符合标准,但我真的很喜欢@CR的答案。还。

我想在树上创建一个更高的实际用户(我),但我想有一天我必须坐下来,当我有时间弄清楚这一点时。

另外,我并不是想在这里挑剔 Ubuntu;我只是想在这里挑衅 Ubuntu。如果我对它感到消极,我不会将其用作我的主要发行版。

答案1

你想要的“用户”叫做LSM:Linux安全模块。最知名的是 SELinux 和 AppArmor。

通过这种方式,您可以防止某些二进制文件(及其子进程)执行某些操作(即使它们的 UID 是root)。但是您可以允许这些操作getty及其子进程,以便您可以手动执行。

答案2

您误解了用户的概念root

用简单的英语来说,root位于“树的顶部”。

如果您决定有一天拥有一名“超级超级用户”,然后下个月决定拥有一名“超级超级超级用户”(!),该怎么办?您想在树上“爬”多远?您将如何调整所有权限和层次结构以使其发挥作用?谁永远处于顶端?必须有人站在顶端,而且就是root。故事结局。

这里给出的解决方案——包括 AppArmor 和 SELinux——并没有真正改变这一点。它们只是允许对root权限和流程进行更精细的控制。

在我看来,您的更新过程不适合预期的结果。但这root根本不是用户的错。不要让事情变得过于复杂,而是将其视为root最高级别的权限用户,然后再考虑其他所有事情,您必须向下工作。

我知道有些人会将此标记下来,但是用户层次结构中没有更高的级别,并且所有其他解决方案只是对如何进行稍微不同的控制root权限的工作方式提供了稍微不同的控制。但他们不创造新用户,具有更高的权限。

您不能让用户拥有“更多权限”,root因为root代表了可能的最高权限级别。使用“比 root 更多的控制权”这样的短语是一个矛盾 -root拥有完全的控制权和所有可能的权限,因此没有什么可以在它上面做的。

答案3

如果您只是想防止文件或目录被更改/删除,那么只需在它们上设置不可变标志即可。

chattr +i <file>

除非删除该标志,否则即使 root 也无法对它们执行任何操作。也可以使用容器/命名空间系统来阻止 root 访问,但这对于您的需要来说似乎有点过分了。

答案4

对于像这样的软件易于,在正常操作中需要访问几乎所有系统,限制是有问题的。即使您阻止它访问系统的某些部分,恶意分发者也很可能有足够的可能性来解决这一问题。例如,通过替换库或仅替换二进制文件或添加恶意配置更改,不受限制的根最终将使用这些更改。

根据您设置限制的程度,某些安装脚本可能会被破坏。

对于限制应用程序和用户的方法,您可以编写 AppArmor 或 SELinux 策略。这样的策略会更受支持取决于您的发行版:基于 Debian 的发行版对 AppArmor 有更好的支持,而基于 Fedora/RHEL 的发行版默认启用 SELinux。

AppArmor 和 SELinux 均适用于白名单策略,其中包含允许(或拒绝)特定操作的规则。策略应用于流程执行,类似地,当在登录时将策略应用于用户的进程时,可以限制用户。深思熟虑的策略是无法规避的(如果不考虑内核错误)。以 root (uid 0) 身份运行的受限进程受配置的策略限制,除非策略中明确允许,否则无法更改它。

AppArmor 策略语言定义了否认规则,它可以用来构建一个黑名单政策。 AppArmor 是一个开始使用 AppArmor 的好地方手册页,维基百科并在 中查找您的发行版上的现有配置/etc/apparmor.d/

提供了大量 SELinux 管理和开发材料SELinux 维基。 SELinux参考政策托管在 github 上。

相关内容