我认为拥有比 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 上。