Wie kann ich eine NFSv4-UID-Zuordnung zwischen Systemen mit UID-Nichtübereinstimmungen durchführen?

11

Ich arbeite in einem Labor mit drei Ubuntu-Systemen und möchte einige Dateisysteme über NFS cross-mounten. Obwohl die Systeme einige der gleichen Benutzernamen haben, stimmen die UIDs und GIDs nicht überein, da die drei Systeme separat eingerichtet wurden. Wenn ich ein NFS-Dateisystem von einem System auf ein anderes mounte, wird der Besitz falsch angezeigt. Wenn beispielsweise UID 1000 auf Server1 Alice ist und dieselbe UID 1000 auf Server2 Bob ist, scheinen die Dateien von Bob im Besitz von Alice zu sein, wenn Server1 das exportierte Dateisystem von Server2 bereitstellt.

Gibt es also eine Möglichkeit, NFS (v4) dazu zu bringen, UIDs zwischen Servern über die zugehörigen Benutzernamen zu konvertieren? Beim Googeln habe ich viele Verweise auf Kerberos, LDAP oder NIS gesehen, was für eine so einfache Aufgabe wie ein massiver Overkill erscheint und möglicherweise nicht möglich ist, da diese Systeme nicht zentral verwaltet werden. Dieser Link scheint darauf hinzudeuten, dass das, was ich frage, unmöglich ist. Ist es richtig?

Bearbeiten: Ich habe jede Konfiguration ausprobiert /etc/idmapd.conf, die ich mir im Internet vorstellen oder finden kann, und während der idmapd-Prozess eindeutig abläuft, habe ich bisher keine Beweise dafür gesehen, dass NFS überhaupt versucht, sie zu verwenden, und Es hat keinerlei Auswirkungen auf die Benutzer-IDs, die auf NFS-Bereitstellungen gemeldet wurden.

Ryan C. Thompson
quelle
1
Ich glaube, dass es für Sie am einfachsten ist, alle Ihre Sachen in Ordnung zu bringen. Sie können bei Ihrem aktuellen Authentifizierungsschema bleiben, da Sie nur drei Boxen haben, aber Sie müssen alle Benutzer-UIDs / GIDs über Ihre Boxen hinweg synchronisieren. Das ist eigentlich keine schwierige Aufgabe.
Serge
Ja, das habe ich schließlich getan.
Ryan C. Thompson

Antworten:

5

Ohne zentralisierte Benutzerverwaltung können Sie am besten alle Server dazu zwingen, für jeden Benutzer dieselbe GID und UID zu verwenden. Jetzt ... ich spreche nur über Dateien und / oder Verzeichnisse.

Was ich in diesem Fall tun würde, ist:

  • Registrieren Sie jede UID und GID, die derzeit verwendet werden.
  • Bearbeiten /etc/passwdund /etc/groupund stimmen Sie die Gruppen auf allen Servern ab. Vorzugsweise zu neuen UIDs und GIDs, damit der nächste Schritt schneller wird
  • Führen Sie dies aus (es wird einige Zeit dauern):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
quelle
Ummm, die Anweisung "find" beginnt im Stammverzeichnis. Der Befehl ändert den Besitz jedes Verzeichnisses auf dem System. Die vorgeschlagenen Änderungen an diesen Befehlen umfassen alle Dateien auf dem System. Ich schlage vor, Sie beschränken die Verzeichnisse, für die dieser Befehl ausgeführt wird, oder Sie haben einen sehr schlechten Tag.
2
Von find man: -group gname True, wenn die Datei zur Gruppe gname gehört. Wenn gname numerisch ist und nicht in der Gruppendatenbank (4) angezeigt wird, wird es als Gruppen-ID verwendet.
BitsOfNix
1

NFSv4 unterstützt die ID-Zuordnung. Wenn aktiviert, überträgt NFS Benutzernamen anstelle von numerischen IDs. Hosts mit unterschiedlichen numerischen UIDs für denselben Benutzer sind kein Problem, da Benutzernamen UIDs auf dem Host zugeordnet werden.

Die ID-Zuordnung wird immer in Kerberos-Sicherheitsmodi ( sec=krb5) verwendet.

Die ID-Zuordnung kann auch im AUTH_UNIX- sec=sysModus (Standardmodus ) verwendet werden. Ich habe Konfigurationsdetails als Antwort auf Folgendes erklärt: So funktioniert die NFSv4-IDMAP mit sec = sys .

sebasth
quelle