![Unix/Linux 中为什么存在超级用户?](https://linux22.com/image/86256/Unix%2FLinux%20%E4%B8%AD%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AD%98%E5%9C%A8%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%EF%BC%9F.png)
我知道某些系统任务只允许特权用户/进程执行,但超级用户(通常是root
Unix/Linux 中的)或管理员仍然可能会带来很多安全问题,并且最常被试图利用。你们都知道为什么。
我不仅(但主要)对 Unix/Linux 一般答案感兴趣。其背后的原因可能是什么?
答案1
超级用户的存在,无论以何种形式,在逻辑上都是必要的。必须有一些允许配置凭据的凭据。那是根。
Root 不一定是用户帐户。它可能是一个能力, 例如。 Unix 历来追求简单的设计,并使用单一概念来实现帐户和功能:用户。每个使用系统的人都会获得一个用户帐户,系统服务也分配有一个用户帐户。除其他外,可以控制用户凭据(/etc/passwd
以及在现代系统上发挥相同作用的其他功能)的系统服务可以间接获取任何功能。在 Unix 设计下,root 还可以直接获取任何能力(例如,通过运行su
或底层系统调用),但即使不是这样,也很难阻止凭证管理器为自己分配任何凭证。
现代系统已经发展成为更细粒度的安全模型。例如,Unix很早就添加了组的概念,允许用户共享文件,但组只能由root管理。大多数现代 Unix 系统都有访问控制列表,允许用户在没有 root 干预的情况下共享文件。越来越多的Linux系统使用安全机制,例如SELinux这限制了 root 可以做的事情。
但更复杂的安全模型是一把双刃剑。更细粒度的权限允许更大的控制,并且允许以简单的方式实施更多的安全策略(例如用于访问的 ACL,而不是通过 setuid 程序进行间接访问)。但更复杂的安全策略更难审查(使用更复杂的语言,需要审查的内容太多),并且实现这些策略的代码更复杂,因此出现错误的风险更大。
1这可以通过双重控制或加密手段来防止,但这会限制功能(如果无法以最终权限运行任意代码)和可用性(如果系统被锁定太多,这会增加被锁定的风险)。
答案2
如果您没有超级用户,则需要能够以普通用户的身份执行现在需要特权提升的所有任务。
这会让你的办公桌无人看管变得更加危险,因为任何在屏幕保护程序锁定系统之前接触你键盘的人都可以添加新的用户帐户、格式化磁盘等。
删除超级用户并不会删除漏洞利用的攻击目标,而只会创建一个更容易的目标。
答案3
因为你应该可以自由地用你的系统做你想做的事,我想创造者是这么想的。
只要您负责任地行事,安全和漏洞利用就不是问题,作为普通用户,您也可能造成很多损害。我认为没有理由限制用户。
答案4
该su
命令之所以存在,是因为这意味着您无需退出帐户即可登录 root。 root 帐户本身用于系统管理、控制用户帐户以及执行挂载文件系统等任务。您可以禁用或删除该su
命令:
# rm -f /bin/su #deletes 'su' command
并且您还可以授予 no sudo
-access 权限,这意味着只有 root 可以进行系统管理。
# deluser user sudo #user being the account to be removed from group sudo