将 /etc 下的配置文件的权限更改为非 root 用户是否存在潜在的陷阱?

将 /etc 下的配置文件的权限更改为非 root 用户是否存在潜在的陷阱?

我们的机器上运行着各种服务,例如 cassandra、datadog 等。

有时,我们需要更改配置,并且我们希望自动传播配置文件并重新启动。

我们使用 Jenkins 来自动化应用软件的工作流程,并考虑将其用于服务。我们不希望 Jenkins 运行的服务器具有对主机服务器的远程 root(甚至 sudo)访问权限。

我想知道我们是否可以安全地将 /etc/cassandra 的所有者更改为 cassandra,将 /etc/datadog 的所有者更改为 dd-agent 等,因为这将有助于我们实现自动化。(实际上,建议将此类文件夹/文件应该由适当的用户拥有,并且以 root 作为所有者是错误的?)

答案1

这个目录的想法是,/etc目录包含所有全系统配置 - 与每个单独的用户配置相对,在大多数情况下,该配置位于下面的$HOME/.config某个位置。由于系统范围的配置会影响所有用户,因此这些文件归 root 所有是正确的。

现在,我不知道您的系统,但您可能每个系统都运行一次 cassandra 等,因此您可能不需要单独的用户配置文件。我认为更改这些文件/子目录的所有权没有任何缺陷,除非它与设计方式相矛盾。(只要您不更改主目录的所有权/etc!)

就我个人而言,我会设置一个实例目录(可能在其主文件夹中),并使用存储在其中的配置 - 但这取决于您。

答案2

Root 不应是与应用程序相关的 etc 配置文件的所有者。优雅的解决方案应该是这样的:datadog 应用程序由用户 datadog 运行,配置文件由 datadog 和组 datadog 拥有。但现在 jenkins 出现了,需要查看/编辑 /etc/datadog 中的某些文件,但可能不是全部。

因此,我们创建了一个名为“datadogjenkins”的新组,并将 datadog 和 jenkins 都设为该组的成员。然后,我们将 jenkins 需要读取/写入/执行的文件/文件夹的所有者组更改为我们的新组。

现在,datadog 和 jenkins 都可以访问这些资产。而且它们都不需要将权限提升到 root。而且我们可以阻止 jenkins 查看它不需要查看的内容,以防 jenkins 受到攻击。

希望这足以解释这一点。

相关内容