Question Maintenir les fichiers de points à l'échelle du serveur dans bash


Disons que j'administre une installation Ubuntu avec plusieurs utilisateurs pour mon organisation.

Nous avons un standard .bash_profile et .bashrc avec des alias, des paramètres d'invite, PATH déclarations, etc ... que nous voulons que tous les utilisateurs utilisent. Lorsqu'un serveur est lancé, il sera initialisé avec chef, qui sera utilisé pour installer ces fichiers sur le système.

Quelle est la meilleure façon de procéder? Je vois quelques options, mais elles ont toutes leurs inconvénients -

  1. Les installer sous /etc (par exemple. /etc/profile).Avantages: Chaque utilisateur lira depuis cet emplacement du système. Les inconvénients: Il écrase toute version existante de ces mouches qui sont préinstallées. Nous pourrions toujours les copier dans les nôtres pour commencer, mais nous devons ensuite les mettre à jour et les maintenir. Peut ne pas être un problème en fonction de la fréquence à laquelle les versions d'Ubuntu finissent par changer les fichiers par défaut

  2. Les installer sous /etc, mais avec un autre nom (par ex. /etc/bash_configs) puis ajouter une ligne au stock profile et bashrc fichiers pour trouver nos nouveaux fichiers. Avantages: Cela fonctionnera également et nos paramètres seront des sources. Les inconvénients: Semble vraiment pirater, et repose sur l'ajout par programmation d'une ligne à la fin des fichiers stock à source nos fichiers personnalisés supplémentaires.

  3. Les installer sous /etc/skel de sorte que chaque fois qu'un nouvel utilisateur est créé, ces modèles seront copiés dans leur répertoire personnel. Avantages: Chaque utilisateur recevra sa copie des fichiers correctement. Les inconvénients: Que se passe-t-il si nous mettons à jour les fichiers, seront-ils mis à jour dans chaque répertoire individuel? Je devine maintenant. Il serait préférable de créer un lien symbolique entre les fichiers afin que tous les utilisateurs pointent vers les mêmes fichiers.

Je suis peut-être trop compliqué, mais il me semble qu'il y a une façon plus propre de faire cela, ce qui me manque. Je serais plus intéressé par la possibilité d'implémenter le n ° 3 avec un mécanisme de mise à jour automatique.

Merci!


3
2018-06-11 22:03


origine


Vous ne pouvez pas avoir de mécanisme de mise à jour automatique. Cela supprimerait les modifications que les utilisateurs auraient pu apporter à leurs versions locales. - terdon♦


Réponses:


Je pense que j'irais pour un mélange de 2 et 3. Placez vos fichiers modifiés dans /etc/bash_config ou n'importe où. Ensuite, modifiez les valeurs par défaut dans /etc/skel et leur faire trouver les fichiers dans /etc/bash_config.

Cela présente certains des avantages des 2 et 3:

  • Les nouveaux utilisateurs auront les bons fichiers;
  • Toute modification sera immédiatement propagée depuis la source des fichiers;
  • Cela permet aux utilisateurs de toujours modifier leurs propres fichiers de points à leur guise.
  • Il ne s'agit pas de modifier le stock /etc/bash.bashrc ou /etc/profile des dossiers. Cela signifie que les mises à niveau ne briseront pas votre système.

Notez que les mises à jour modifiant le /etc/skel les fichiers peuvent causer des problèmes car cela signifierait que vos modifications ont été supprimées. Cela ne devrait cependant pas être un gros problème.

Pour ce qui est d'être pirate, bon d'accord, c'est le cas. Un peu. Pas si mal, tout ce dont vous avez besoin est de lancer quelque chose comme ça:

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

2
2018-06-11 23:28





Il suffit de placer vos modifications dans /etc/profile.d/ avec .sh extension (par ex. /etc/profile.d/MYCOMPANY.sh). Ils seront appelés par /etc/profile automatiquement

De cette façon, vous pouvez toujours mettre à jour et tous les utilisateurs recevront ces mises à jour.


1
2018-06-12 00:59