/etc/sudoers 与 /etc/sudoers.d/ 文件为用户启用 sudo

/etc/sudoers 与 /etc/sudoers.d/ 文件为用户启用 sudo

我正在使用 Yocto 为主板构建图像。我已禁用该root用户。我正在添加一个新用户,比如说adminuser1。在我看来,作为管理员有两种选择adminuser1

  • 添加adminuser1到 /etc/sudoers 中的 sudoers
  • 创建一个新文件/etc/sudoers.d/0001_admin1并添加一行adminuser1 ALL=(ALL) ALL

默认/etc/sudoers有该sudo组评论# %sudo ALL=(ALL) ALL

我试图了解哪种方法在安全性方面更好:

  • 我应该添加adminuser1sudo组并取消注释# %sudo ALL=(ALL) ALL/etc/sudoers
  • 添加/etc/sudoers.d/0001_admin1和仅adminuser1 ALL=(ALL) ALL在文件中添加。

答案1

sudoers和之间的选择sudoers.d与安全性无关,而与可维护性有关。

  • 通过取消注释sudo中的组行/etc/sudoers,您可以添加需要对sudo组具有 sudo 访问权限的所有用户。这可能比在 中添加新文件更容易sudoers.d,也可能不那么容易,具体取决于您的设置。但是,更改附带的配置文件可能会使事情变得更加困难(例如,如果您的发行版有更新会覆盖 sudoers 文件,您必须确保保留您的更改)。
  • 通过将文件添加到/etc/sudoers.d,您不会遇到我上面暗示的更新问题,但是如果您显式添加配置adminuser1而不是sudo组,则添加更多用户以拥有 sudo 权限将需要添加更多文件/etc/sudoers.d;这可能会或可能不会比仅仅将它们添加到正确的组更复杂。

没有一种方法是“最好的”;并且肯定不存在基于“我在哪个文件中配置 sudo 权限”的安全问题。只需考虑这两种方法的优点和/或缺点,并使用最适合您的用例的方法。

答案2

来自维基百科:

最小特权原则(也称为最小特权原则或最小权限原则)要求在计算环境的特定抽象层中,每个模块(例如进程、用户或程序,取决于主体)必须能够仅访问其合法目的所需的信息和资源。

这意味着选项 2 是最好的,因为您可以定制 adminuser1 的权限。使用选项 1,当将来您将 adminuser2 添加到 sudo 组时,他们将具有相同的权限,但不允许您定制这两个用户的权限。

此外,始终使用维苏多编辑 sudoers 文件。

华泰

相关内容