安全性 - 以 root 或用户身份运行守护进程、程序与 sudo su

安全性 - 以 root 或用户身份运行守护进程、程序与 sudo su

我有一些关于 Linux 安全性的问题:

  • 以root身份运行进程是一个很大的错误(root拥有太多的权力+程序在系统中获得太多的权限)。我总是以用户身份运行进程(我只是使用chmod,chown来访问特殊文件并能够运行它们)。这比以 root 身份运行进程/守护进程/程序更好吗?

  • 如果我使用sudo su然后启动一个进程,是否等于以用户身份运行进程的安全性?或者它与以 root 身份运行进程相同吗?

  • 我应该以 root 身份安装软件吗?或者也许作为普通用户?
  • 编辑配置文件怎么样?我应该以 root 身份进行编辑,还是像以前一样,使用sudo su我的常规非特权用户帐户进行编辑?

答案1

一般的想法是让一个进程请求(并拥有)完成其工作所需的最少特权。此类示例包括绑定到端口 80(可能需要 root)但随后更改为非特权系统用户的 Web 服务器。

您可能已经注意到“可能需要root”而不是“必须有root”。传统上,进程必须以 root 身份启动才能绑定到小于 1024 的端口,然后再更改。现在,如果设置正确,您就不需要这样做了。 CAP_NET_BIND_SERVICE 将允许您绑定到小于 1024 的端口,而不是作为 root。

这是“少花钱多办事”的又一次迭代。当您只需要绑定端口这一方面时,为什么要以 root 身份运行并拥有所提供的所有访问权限。功能为您提供了这种粒度。

以 root 或其他用户身份启动守护进程与以 root 身份启动 sudo 之间的区别很小,并且通常会产生相同的结果。

对于编辑、管理工作等,大多数人更喜欢成为“标准”用户并使用 sudo 来完成这些任务。无法以 root 身份登录就关闭了一扇可能不安全的大门。

软件一般以 root 身份安装。为什么?因为如果你的网络服务器可以修改它的二进制文件或配置文件(为什么是apache,我认为你的公共访问目录应该是/etc)是一个坏主意。

答案2

这些都不是简单的是/否问题,他们应该有“在某些情况下”、“经常”等答案。

话虽如此,无论如何我都会尝试使用是/否答案。我还假设您有一个常规桌面或一个小型家庭服务器。不是什么花哨的东西。

这将为您提供以下四个问题的答案

  1. 按照开发人员的意图使用它,如果您开始搞乱权限和所有者/组,事情很可能会崩溃
  2. 使用时会发生变化和不会发生变化的事情存在一些问题sudo su。使用sudo -i替代(或者sudo -u someuser -i如果您想成为其他人而不是 root)。sudo -i就像以 root 身份登录一样。几乎所有与你的用户有关的东西都被“遗忘”了
    • 如果您从包中安装它:请使用 root。
    • 如果您从源代码编译它:使用您的常规用户并且仅以make installroot 身份执行(最后一步)。 (或者不做这一切,此步骤旨在将文件重新分配到更“理智”的位置,但如果认为安全性更重要,那么您可以跳过它(这是相当偏执的))
  3. 使用该文件所属的用户。这通常归结为:对 中的所有内容使用 root /etc,对 homedir 中的所有内容使用您的用户。

相关内容