NFSv4 mit idmap

NFSv4 mit idmap

Auf dem NFS-Server werden die folgenden Fehler angezeigt. Können Sie mir bitte sagen, wie ich das beheben kann?

Einzelheiten:

System: CentOS Version 6.4, NFS: nfs-utils-1.2.3-36

# cat /etc/idmapd.conf

[General]
Domain = domain.com

[Mapping]
Nobody-User = nobody
Nobody-Group = nobody

[Translation]
Method = nsswitch

Sep  3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com'
Sep  3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'

BEARBEITEN: 03. September 2013 10:41

Bitte beachten Sie, dass ich NFSv4 verwende und diese Fehler nur auf dem NFS-Server auftreten (nicht auf NFS-Clients).

Server:

# cat /etc/sysconfig/nfs

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
...
RPCNFSDARGS="-N 2 -N 3"

Kunden:

# cat /etc/fstab

server:/     /data  nfs4    defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid    0 0

Bearbeiten: Mi., 11. Juni 2014, 14:52:50 BST

# getent passwd "0" | cut -d: -f1
root
# getent passwd "500" | cut -d: -f1
user1

-

# grep "^passwd" /etc/nsswitch.conf 
passwd:     files

Antwort1

Ich wage mal eine Vermutung. Was erhalten Sie, wenn Sie die UID „0“ oder „500“ auf Ihrem NFS-Server auflösen? Handelt es sich dabei etwa um lokale Konten?

Der Grund, warum ich das vorschlage, ist, dass NFSv4 konzeptgemäß auf Kontonamen innerhalb einer Domäne verweist und versucht, die „lokale Authentifizierung“ früherer NFS-Versionen zu vermeiden. Es verwendet daher idmapd, das Kontonamen – die in den NFS-Paketen weitergegeben werden – übersetzt, um Benutzernamen in UID/GID zu übersetzen.

Wie Sie richtig festgestellt haben, scheint das hier der Fehler zu sein. Meine Frage wäre daher: Welche Authentifizierungsdomäne verwenden Sie und erhalten Sie bei der Abfrage eine Antwort für die UIDs 0 und 500?

Ich habe Ähnliches erlebt, als der Server beispielsweise im Vergleich zum Client auf den falschen Zweig des LDAP-Verzeichnisses (also Active Directory) schaute. Da er die UID/Benutzername-Beziehung nicht auflösen konnte, brach er ab und übersetzte diese Benutzer infolgedessen in „niemand“.

Sie haben die Auflösung über nsswitch konfiguriert. Was sagt nsswitch für „passwd“? (In erster Linie auf dem Server, da das Problem dort aufzutreten scheint.)

Edit: OK, also laut Ihrem 'passwd' haben Sie 'files' als Ihre lokale Datenbank - z.B. /etc/passwd. Das bedeutet, dass Sie UID/GID über lokale Konten abbilden. Siesollte nichtVerwenden Sie mit NFSv4 niemals UIDs – es sollten Benutzernamen sein.

Wenn ich jedoch ein bisschen googele, bekomme ich Folgendes: http://www.spinics.net/lists/linux-nfs/msg38598.html

Daher lautet die nächste Frage: Verwenden Sie die „Sys“-Authentifizierung? Ich gehe anhand Ihrer fstab davon aus, dass Sie dies tun. An diesem Punkt – dies scheint das erwartete Verhalten zu sein – verwenden Ihre Clients „Sys“ und übergeben daher UID/GID. idmapd beschwert sich, weil es sich nicht um gültige Benutzer handelt (es sind UIDs).

Wenn Sie auf Ihrem Client eine Datei mit der UID 500 oder 0 „berühren“, wie sieht sie dann auf Client und Server aus (ls -l, um Benutzernamen abzurufen, ls -ln, um UID abzurufen)? Wenn das richtig funktioniert, scheint dies ein Artefakt der Abwärtskompatibilität zwischen NFSv3 Auth sys und NFSv4 zu sein, und die Nachrichten sind harmlos.

Sie könnten ein Upgrade auf Kerberos-Authentifizierung oder Ähnliches in Betracht ziehen, aber meiner Erfahrung nach ist das keine triviale Angelegenheit. (Wenn auch mit einigen recht praktischen Vorteilen.) Die von mir verlinkte Meldung (Trail) impliziert, dass diese Fehlermeldung in späteren Kernel-Versionen nicht mehr angezeigt wird.

Antwort2

Sie verwenden offenbar NFSv3, das nur numerische Benutzer- und Gruppenkennungen über das Netzwerk sendet.

Damit idmapd funktioniert, müssen Sie NFSv4 verwenden, das von idmapper verstandene und lokalen Konten zugeordnete Benutzer@Domänen-Kennungen sendet (Sie benötigen also nicht auf Server und Client dieselbe UID/GID).

Versuchen Sie, diese Freigabe mit der Option -t zu mounten:

mount -t nfs4 server:/path /mountpoint

Antwort3

Bitte überprüfen Sie, ob folgende Lösungen aus demGentoo-Forumdir helfen:

 1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname.
 2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname. 

Für Ihr Setup sieht dies nach der zweiten Option aus.

Wenn Sie bei Google nach der genauen Fehlermeldung „nss_getpwnam: Name ‚0‘ lässt sich nicht in die Domäne einordnen“ suchen, erhalten Sie zahlreiche Ergebnisse, die Ihnen ebenfalls helfen könnten (ich habe nur auf die vielversprechendsten hingewiesen).

verwandte Informationen