假设我正在为我的组织管理一个具有多个用户的 Ubuntu 设置。
我们有一个标准.bash_profile
,.bashrc
其中包含别名、提示设置、PATH
声明等...我们希望所有用户都使用它。当服务器启动时,它将使用 chef 进行初始化,这将用于在系统上安装这些点文件。
最好的办法是什么?我看到了几个选择,但它们都有缺点 -
将它们安装在
/etc
(例如/etc/profile
)下。优点:每个用户都将从这个系统范围的位置读取。缺点:它会覆盖任何预安装的现有版本的 flies。我们可以先将它们复制到我们的版本中,但之后我们必须更新和维护它们。这可能不是问题,具体取决于 Ubuntu 版本最终更改默认点文件的频率将它们安装在下
/etc
,但使用其他名称(例如),然后在库存和文件/etc/bash_configs
中附加一行以获取我们的新文件。profile
bashrc
优点:它也将起作用并且我们的设置将成为来源。缺点:看起来真的是黑客攻击,并且依赖于以编程方式将一行附加到库存文件末尾到source
我们的附加自定义文件。将它们安装在下方
/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
。
这样,您就可以随时更新,并且所有用户都会收到这些更新。