dette technique
Pour les raisons ci-dessous, il est beaucoup plus simple d'aborder ce problème au début pour éviter l'accumulation de dette technique . Même si vous vous trouvez déjà dans cette situation, il vaut probablement mieux y faire face dans un avenir proche que de continuer à construire.
systèmes de fichiers en réseau
Cette question semble se concentrer sur l'étendue étroite du transfert de fichiers entre des machines avec des systèmes de fichiers locaux, ce qui permet des états de propriété spécifiques à la machine.
Les considérations relatives au système de fichiers en réseau sont facilement le plus grand cas pour essayer de garder vos mappages UID / GID synchronisés, car vous pouvez généralement jeter ce "obtenu autrement" que vous avez mentionné par la fenêtre au moment où ils entrent dans l'image. Bien sûr, vous n'avez peut-être pas de systèmes de fichiers en réseau partagés entre ces hôtes en ce moment ... mais qu'en est-il de l'avenir? Pouvez-vous honnêtement dire qu'il n'y aura jamais de cas d'utilisation pour un système de fichiers en réseau introduit entre vos hôtes actuels ou des hôtes qui seront créés à l'avenir? Il n'est pas très clairvoyant de penser le contraire.
Supposons qu'il /home
s'agit d'un système de fichiers en réseau partagé entre host1
et host2
dans les exemples suivants.
- Autorisations en désaccord :
/home/user1
appartient à un utilisateur différent sur chaque système. Cela empêche un utilisateur d'être en mesure d'accéder de manière cohérente ou de modifier son répertoire personnel sur tous les systèmes.
- chown wars : Il est très courant pour un utilisateur de soumettre un ticket demandant que les autorisations de son répertoire personnel soient fixées sur un système spécifique. La résolution de ce problème le
host2
casse les autorisations sur host1
. Il peut parfois falloir plusieurs de ces tickets pour être travaillé avant que quelqu'un ne recule et se rende compte qu'un remorqueur de guerre est en jeu. La seule solution consiste à corriger les mappages d'ID en désaccord. Qui conduit à...
- Rééquilibrage de l'enfer UID / GID : La complexité de la correction des ID augmente de façon exponentielle par le nombre de remappages impliqués pour corriger un seul utilisateur sur plusieurs machines. (
user1
a l'ID de user2
, mais user2
a l'ID de user17
... et ce n'est que le premier système du cluster) Plus vous attendez pour résoudre le problème, plus ces chaînes peuvent devenir complexes, nécessitant souvent le temps d'indisponibilité des applications sur plusieurs serveurs afin de synchroniser les choses correctement.
- Problèmes de sécurité :
user2
on host2
a le même UID que user1
on host1
, ce qui leur permet d'écrire /home/user1
sur host2
sans le savoir user1
. Ces modifications sont ensuite évaluées host1
avec les autorisations de user1
. Qu'est ce qui pourrait aller mal? (si user1
est un utilisateur de l' application, quelqu'un dev va découvrir qu'il est inscriptible et va faire des changements. c'est un temps fait ses preuves.)
Il existe d'autres scénarios, et ce ne sont que des exemples des plus courants.
les noms ne sont pas toujours une option
Tous les scripts ou fichiers de configuration écrits avec des ID numériques deviennent intrinsèquement non transférables dans votre environnement. Généralement, ce n'est pas un problème car la plupart des gens ne codent pas en dur à moins qu'ils ne soient absolument tenus de le faire ... mais parfois l'outil avec lequel vous travaillez ne vous donne pas le choix. Dans ces scénarios, vous êtes obligé de gérer n versions différentes du script ou du fichier de configuration.
Exemple: pam_succeed_if
vous permet d'utiliser les champs de user
, uid
et gid
... une option « groupe » brille par son absence. Si vous étiez placé dans une position où plusieurs systèmes étaient censés implémenter une certaine forme de restriction d'accès basée sur le groupe, vous auriez n différentes variantes des configurations PAM. (ou au moins un seul GID sur lequel vous devez éviter les collisions)
gestion centralisée
la réponse de natxo a assez bien couvert cela.