Diese Frage scheint schon oft gestellt worden zu sein, aber die anderen Antworten trafen irgendwie nicht auf mich zu.
Grundsätzlich habe ich gerade einen neuen NFSv4-Server eingerichtet und stehe vor dem klassischen Problem, dass UIDs und GIDs nicht zwischen Server und Client übereinstimmen. Das Synchronisieren von / etc / passwd und / etc / group ist in meinem Szenario jedoch nicht möglich. Beachten Sie, dass ich auf beiden Computern dieselben Benutzer habe (im Gegensatz zu dieser Frage ).
Daher habe ich mich mit idmap befasst: Laut einigen Quellen scheint NFSv4 Benutzernamen zu senden (im Gegensatz zum Verhalten von NFSv3 beim Senden von UID / GID), und die Rolle von idmap besteht darin, diese Benutzernamen in die Server-UID / GIDs zu übersetzen.
Dies scheint jedoch in meinem Fall nicht zu funktionieren (Setup-Details unten), was ich als sehr Standard betrachte (so ziemlich nur NFS von Repo installiert).
Vermisse ich etwas Gibt es eine Möglichkeit, dies zu erreichen, ohne LDAP oder Kerberos einzurichten?
Server-Setup
Der Server ist Ubuntu 16.04
installiert und zwei Benutzer.
user1@server:~$ id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),27(sudo)
user1@server:~$ id user2
uid=1001(user2) gid=1001(user2) groups=1001(user2)
NFS wurde von Repo installiert und zum Exportieren eines Testordners konfiguriert.
user1@server:~$ sudo apt-get install nfs-kernel-server
user1@server:~$ sudo cat /proc/fs/nfsd/versions
+2 +3 +4 +4.1 +4.2
user1@server:~$ ls -ld /srv/nfs/test/
drwxrwxrwx 2 nobody nogroup 4096 nov 2 17:34 /srv/nfs/test/
user1@server:~$ cat /etc/exports
"/srv/nfs/test" 192.168.x.x(rw,sync,no_subtree_check)
Da der Server und der Client unterschiedliche Hostnamen haben, habe ich den Wert "Domain" in der Konfigurationsdatei von idmapd geändert. Ansonsten ist die Datei identisch mit der vom Paketmanager installierten. Bitte beachten Sie, dass der Inhalt dieser Datei auf Server und Client identisch ist.
user1@server:~$ cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = mydomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
Client-Setup
Der Client hat auch Ubuntu 16.04
zwei Benutzer, die jedoch dieselben Benutzernamen, aber unterschiedliche UIDs / GIDs haben .
user1@client:~$ id user1
uid=1001(user1) gid=1002(user1) groups=1002(user1),27(sudo)
user1@client:~$ id user2
uid=1000(user2) gid=1000(user2) groups=1000(user2),27(sudo)
NFS wurde von Repo installiert und die Testfreigabe wurde bereitgestellt.
user1@client:~$ sudo apt-get install nfs-common
user1@client:~$ mkdir ./test
user1@client:~$ sudo mount -t nfs4 192.168.x.x:/srv/nfs/test ./test
Testen
Zuerst erstelle ich eine Datei auf dem Client, und das scheint in Ordnung zu sein:
user1@client:~$ touch test/testfile
user1@client:~$ ls -l ./test
total 0
-rw-rw-r-- 1 user1 user1 0 nov 2 17:24 testfile
Wenn ich die Datei vom Server aus ansehe, stelle ich fest, dass der Eigentümer der falsche ist, während die Gruppe nicht vorhanden ist.
user1@server:~$ ls -l /srv/nfs/test
total 0
-rw-rw-r-- 1 user2 1002 0 nov 2 17:24 testfile
Experimente
Entsprechend dieser Antwort auf eine ähnliche Frage sollte die ID-Zuordnung auf dem Server wie folgt aktiviert werden (beachten Sie die Fehler):
user1@server:~$ sudo tee /sys/module/nfsd/parameters/nfs4_disable_idmapping <<< "N"
user1@server:~$ sudo nfsidmap -c
nfsidmap: 'id_resolver' keyring was not found.
user1@server:~$ sudo service rpcidmapd restart
Failed to restart rpcidmapd.service: Unit rpcidmapd.service not found.
user1@server:~$ sudo service nfs-kernel-server restart
Während Sie auf dem Client sind (beachten Sie das Fehlen von Fehlern):
user1@client:~$ sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping <<< "N"
user1@client:~$ sudo nfsidmap -c
Aber die Ergebnisse sind seltsam:
user1@client:~$ touch test/testfile
user1@client:~$ ls -l test
total 0
-rw-rw-r-- 1 user2 4294967294 0 nov 2 19:16 testfile
user1@server:~$ ls -l /srv/nfs/project/
total 0
-rw-rw-r-- 1 user2 1002 0 nov 2 19:16 prova
Eine andere Antwort schlägt vor, die idmapd-Konfiguration wie folgt zu ändern (der Inhalt ist auf beiden Computern gleich):
user1@server:~$ cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = mydomain
[Translation]
Method=static
[Static]
user1@mydomain = user1
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
Das scheint aber keinen Unterschied zu machen.