在 bash 中维护服务器范围的点文件

在 bash 中维护服务器范围的点文件

假设我正在为我的组织管理一个具有多个用户的 Ubuntu 设置。

我们有一个标准.bash_profile.bashrc其中包含别名、提示设置、PATH声明等...我们希望所有用户都使用它。当服务器启动时,它将使用 chef 进行初始化,这将用于在系统上安装这些点文件。

最好的办法是什么?我看到了几个选择,但它们都有缺点 -

  1. 将它们安装在/etc(例如/etc/profile)下。优点:每个用户都将从这个系统范围的位置读取。缺点:它会覆盖任何预安装的现有版本的 flies。我们可以先将它们复制到我们的版本中,但之后我们必须更新和维护它们。这可能不是问题,具体取决于 Ubuntu 版本最终更改默认点文件的频率

  2. 将它们安装在下/etc,但使用其他名称(例如),然后在库存和文件/etc/bash_configs中附加一行以获取我们的新文件。profilebashrc优点:它也将起作用并且我们的设置将成为来源。缺点:看起来真的是黑客攻击,并且依赖于以编程方式将一行附加到库存文件末尾到source我们的附加自定义文件。

  3. 将它们安装在下方/etc/skel,以便每次创建新用户时,这些模板都会被复制到他们的主目录中。优点:每个用户都将正确获得其文件副本。缺点:如果我们更新文件,它们会在每个单独的目录中更新吗?我现在猜是这样的。如果有办法对文件进行符号链接,以便所有用户都指向相同的文件,那就更好了。

我可能把它复杂化了,但我觉得应该有一种更简洁的方法来实现这一点,而我却忽略了这一点。我最感兴趣的是,是否有办法通过某种自动更新机制来实现 #3。

谢谢!

答案1

我认为我会选择 2 和 3 的混合。将修改后的文件放在/etc/bash_config或 任何地方。然后,修改 中的默认值/etc/skel并让它们在 中获取文件/etc/bash_config

这兼具了 2 和 3 的一些优点:

  • 新用户将拥有正确的文件;
  • 自文件被获取以来,任何更改都将立即传播;
  • 这使得用户仍然可以随意修改自己的点文件。
  • 它不涉及编辑库存/etc/bash.bashrc/etc/profile文件。这意味着升级不会破坏您的系统。

请注意,修改/etc/skel文件的升级可能会导致问题,因为这意味着您的修改将被删除。不过这应该不是什么大问题。

至于它是否是 hack 程序,好吧,是的。有一点。不过还不算太糟,你只需要运行一次这样的程序:

echo ". /path/to/my_bashrc/" >> /etc/skel/.bashrc
echo ". /path/to/my_profile/" >> /etc/skel/.bashrc

答案2

只需将修改放入扩展/etc/profile.d/.sh(例如/etc/profile.d/MYCOMPANY.sh)。它们将被自动调用/etc/profile

这样,您就可以随时更新,并且所有用户都会收到这些更新。

相关内容