NFSv4 und sec=sys - Username+uid+gid müssen gleich sein

Beim Versuch festzustellen, wieso Method = static, nsswitch in /etc/idmapd.conf nicht funkioniert.

Als erstes mal nfs4_disable_idmapping Parameter auf N gesetzt (defaults: EL7: Y, EL6: N, EL5: nicht verfügbar), damit das idmapping tatsächlich stattfindet. Danach zeigen die Dateien obwohl die User auf Client und Server unterschiedliche UID+GID haben korrekte Werte an.

Irgendwann bin ich darauf gestossen:

...
static: This method works only for translating GSS authenticated names to local names
...
(/usr/share/doc/libnfsidmap-0.25/README)

Ok, geht also nicht mit sec=sys sondern nur mit sec=krb5 und Co. Der Hinweis hätte gerne schon in den idmapd.conf Kommentaren stehen dürfen.

Was dann aber schon sehr verwunderlich war, dass obwohl ls -l anzeigt, dass ich Zugriff habe, dann der Zugriff nicht so funktioniert hat.

Der Ubuntu Bug nfs4+idmap does not map uids correctly when using AUTH_SYS beschreibt wahrscheinlich das Problem. Angezeigt wird es wie erwartet:
  • Server schickt User als String, Client löst String auf lokale UID/GID auf
Aber bei den Zugriffsberechtigungen zählen schlussendlich doch nur die UID+GID Nummer. Wenn der User auf Client + Server nicht die selbe UID+GID hat, kriegt mann beim Versuch etwas zu schreiben einen Zugriffsfehler.

Fazit

Für sec=sys müssen Username, UID und GID auf Client und Server übereinstimmen, wenn man sicherstellen will, dass es für alle funktioniert.
Oder noch besser auf sec=krb5 wechseln!

Weitere Notizen

  • keyctl list %:.id_resolver zeigt was nfsidmap -l anzeigt
  • dies auch: grep id_resolv /proc/keys
  • rpm -ql libnfsidmap
  • nfs4_disable_idmapping Parameter für das nfs und nfsd Kernel Modul (zählt nur für sec=sys) - bei
  • wie wird das nfsidmap Utility effektiv aufgerufen via request-key.conf Konfiguration?
    • nfsidmap -v 335650703 uid:test1@local.dns
    • nfsidmap -v 168930658 gid:root@local.dns

Beliebte Posts aus diesem Blog