我在网上看到有人说必须使用 sudoedit 而不是 sudo vim。我明白为什么这样,也应该这样,这样你就不能只编辑 root 用户的文件了。
但是我想管理一个 nologin 用户(运行单个应用程序的服务帐户),让我们用我自己的用户名称呼她为“nologinuser”非根帐户。为此,我需要 sudoers 文件中的正确权限。
我曾与 2 位 Linux 系统管理员进行过讨论,但他们的意见不一致。
Linux 管理员 A 说:您应该为每个配置文件创建一个 sudoedit 规则,并为每个命令创建一个 sudo 规则。
Linux 管理员 B 说:只需创建一个 sudo 规则,允许您使用“sudo -u nologinuser *”以该用户身份读取/写入/执行所有内容
我个人同意管理员 B 的观点,因为使用“sudo -u nologinuser”,您只能以该用户的身份执行每个命令,并且通过此命令,您还继承了该用户的权利,因为您以该用户的身份执行该命令。这也不会导致更改 root 用户文件的能力存在安全问题,因为没有任何事情以 root 身份执行,而且它最灵活。
谁是对的,或者有第三个更好的选择?谁能告诉我这方面的最佳做法。以非 root 身份管理 nologin 应用程序用户的最佳方法是什么?
谢谢。
答案1
-
Linux 管理员 A 的计划限制性更强,迫使您考虑哪些命令和文件需要此类访问权限。结果将是一堆允许的命令和文档,它们在您的 sudoers 文件中具有配置行。这些配置行本质上是文档。
- 这种方法的优点:最小特权原则表明,最小化此类权限更好。此外,最终您会获得更详细的文档。这些事情可能更好,并且被认为对安全有益。
- Linux 管理员 B 的计划更简单。如果您不担心运行“sudo -u nologinuser sh”的后果,那么可能就没有什么安全问题需要担心。
- 这种方法的优点:越简单,越容易审计,越容易理解。这些事情可以更好,并且被认为对安全有益。
Linux 管理员 A 的计划的主要缺点是需要更多时间/精力,尤其是设置。如果您不知道确切的细节,那么您将需要弄清楚这些细节,这可能需要更多时间/精力,或者花费大量不可行的时间/精力。您可能会认为这些成本不值得。
结论:两种观点都有其可取之处。您更看重哪一种将取决于谁来负责(听起来可能是您)。在这种情况下,在这种情况下的个人决定是让值得信赖的人来做这样的决定的一个关键原因。(这些类型的场景也可能是为什么这个世界上的专家计算机程序员还没有设法使更多的设计流程自动化。)所以,您可以决定(并准备对您负责的事情负责)。
既然您问了第三个选项,那么这里有一个:您使用通过 HTTPS 登录的自定义网站,然后自动仅更新所需的文件,或仅运行所需的应用程序,而不是手动在命令行中运行“sudo”(或 sudoedit 变体)。如果做得正确,这也可以相当安全。
由于这个问题涉及的是高端安全性,而不是许多普通终端用户日常遇到的问题,因此这些问题可能更适合 ServerFault.com(或者也许信息安全或 ),而不是 SuperUser.com。尽管两种观点都有其可取之处,但并没有哪一种观点是绝对正确或完全错误的,这最终使这个问题更多地基于个人意见,而对于这些网站来说,这不是最好的问题类型。