Comment puis-je faire le mappage UID NFSv4 sur des systèmes avec des incompatibilités UID?

11

Je travaille dans un laboratoire avec trois systèmes Ubuntu, et je voudrais cross-monter certains systèmes de fichiers via NFS. Cependant, alors que les systèmes ont certains des mêmes noms d'utilisateur, les UID et GID ne correspondent pas, car les trois systèmes ont été configurés séparément. Lorsque je monte un système de fichiers NFS d'un système à un autre, la propriété apparaît incorrecte. Par exemple, si l'UID 1000 est alice sur server1 et le même UID, 1000, est bob sur server2, alors quand server1 monte le système de fichiers exporté de server2, les fichiers de bob semblent appartenir à alice.

Existe-t-il un moyen de faire en sorte que NFS (v4) convertisse les UID entre les serveurs via leurs noms d'utilisateur associés? Googler pour cela, j'ai vu beaucoup de références à Kerberos, LDAP ou NIS, ce qui semble être une surpuissance massive pour une tâche aussi simple, et pourrait ne pas être possible car ces systèmes ne sont pas gérés de manière centralisée. Ce lien semble indiquer que ce que je demande est impossible. Est-ce correct?

Edit: J'ai essayé toutes les configurations /etc/idmapd.confauxquelles je peux penser ou trouver sur Internet, et bien que le processus idmapd soit clairement en cours d'exécution, jusqu'à présent je n'ai vu aucune preuve que NFS tente de l'utiliser du tout, et cela n'a jamais eu aucun effet sur les ID utilisateur signalés sur les montages NFS.

Ryan C. Thompson
la source
1
Je crois que la chose la plus simple pour vous est de mettre tous vos trucs en ordre. Vous pouvez conserver votre schéma d'authentification actuel car vous n'avez que trois boîtes, mais vous devez synchroniser tous les UID / GID des utilisateurs sur vos boîtes. ce n'est pas une tâche difficile en fait.
Serge
Oui, c'est ce que j'ai finalement fini par faire.
Ryan C. Thompson

Réponses:

5

Sans administration centralisée des utilisateurs, la "meilleure" façon que je vois est pour vous de forcer tous les serveurs à utiliser les mêmes GID et UID pour chaque utilisateur. Maintenant ... je ne parle que des fichiers et / ou répertoires.

Ce que je ferais dans ce cas, c'est:

  • Enregistrez chaque UID et GID actuellement utilisés.
  • Modifiez /etc/passwdet faites /etc/groupcorrespondre les groupes sur tous les serveurs. De préférence aux nouveaux UID et GID pour que la prochaine étape soit plus rapide
  • Exécutez ceci (cela prendra un certain temps):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
la source
Ummm, l'instruction "find" commence à partir du répertoire racine. La commande modifie la propriété de chaque répertoire du système. Les modifications suggérées pour ces commandes incluront tous les fichiers du système. Je vous suggère de limiter les répertoires contre lesquels cette commande s'exécute ou vous aurez une très mauvaise journée.
2
Depuis find man: -group gname True si le fichier appartient au groupe gname. Si gname est numérique et n'apparaît pas dans la base de données group (4), il est considéré comme un ID de groupe.
BitsOfNix
1

NFSv4 prend en charge le mappage d'ID. Lorsqu'il est activé, NFS transmet les noms d'utilisateur au lieu des identifiants numériques. Les hôtes ayant un uid numérique différent pour le même utilisateur ne sont pas un problème, car les noms d'utilisateur sont mappés aux uids sur l'hôte.

Le mappage d'ID est toujours utilisé avec les modes de sécurité Kerberos ( sec=krb5).

Le mappage d'ID peut également être utilisé en mode AUTH_UNIX (par défaut sec=sys). J'ai expliqué les détails de configuration en réponse à: Comment faire fonctionner l'idmap NFSv4 avec sec = sys .

sebasth
la source