系统configuration文件

我们的服务器有自己的configuration文件的各种服务。 Nginx,Dovecot,Postfix …

所有这些configuration文件都位于它们自己的/ etc / {service}目录中。

我试图将这些文件移动到一个中央位置,并添加一个符号链接。 就像: /etc/postfix/main.cf <- /root/server-config/postfix/main.cf

以上作品适用于大多数服务(Nginx,PHP,..)。 但是,某些与电子邮件相关的服务会给权限拒绝错误。 我已经尝试了许多不同的选项,如给更多的权限,符号链接和源文件,给予最大的权限(777),作为根运行,添加dovecot /后缀到根组。

我试过的所有选项都没有任何区别。 我们的主要目标是将所有的configuration文件放在一个git仓库中,并将它们推送到GitHub中,这样我们就可以在版本控制中使用它们。

我能做些什么来完成上述工作。

如果你有一个不能使用git或符号链接的替代方法,请将其添加为注释。

我认为你的想法是将configuration文件从其默认位置移动到另一个位置并创build符号链接,这不是一个好的select,它可能会产生很多问题。

  • 如果符号链接由于某种原因而中断,相关的软件或服务可能会停止工作,这可能会使您的系统和服务易受攻击且无法使用。 你也可能发现很难修复。 所以你应该考虑以相反的方式来做。

你可以考虑使用诸如etckeeper之类的工具,它可以让你自动将对 /etc或(其他目录)所做的更改存储到像git这样的版本控制系统中。 然后你可以把这些推到一个中央的git回购。

你为什么认为你需要移动他们在Git回购? 像etckeeper这样的工具已经存在了,他们把所有的/ etc都保存在一个git仓库中。

还有大量的configurationpipe理工具(puppet,chef,ansible等),你可以/应该用来configuration的东西。 然后,你可以保持你的configurationpipe理configuration在你的git仓库。

许多configuration文件需要特定的所有者和权限。 请不要假设root:root是正确的,而对于configuration文件来说,0777的权限是绝对可怕的。 这几乎肯定意味着任何在你的系统上任何小小的妥协都成为妥协的一切。