Wir haben ein Problem bei der Verwendung von NFS. Wir können nicht in ein Verzeichnis auf dem NFS-Clientcomputer schreiben, wenn dieses Verzeichnis auf dem NFS-Server erstellt wurde. Der Grund scheint eine Datei- / Verzeichnisberechtigung und eine Benutzerzuordnung zu sein.
Unser Setup:
Wir haben 2 EC2-Knoten - Ubuntu 16.04.2 LTS
Auf einem Computer installierter NFS-Server:
ubuntu@master:~$ less /etc/exports
/home/ubuntu/data *(rw,no_subtree_check,sync,insecure)
Dasselbe Verzeichnis ist auf einem anderen Computer installiert:
sudo mkdir /home/ubuntu/data
sudo mount -t nfs masterIp:/home/ubuntu/data /home/ubuntu/data
Ein Problem, das wir haben:
Wenn wir ein Verzeichnis in NFS in einem Master erstellen, wird es folgendermaßen erstellt:
# sudo mkdir /home/ubuntu/data/Test
# sudo ls -all /home/ubuntu/data
drwxr-xr-x 2 root root 4096 Jul 5 07:19 Test
Der Master hat keine Probleme beim Zugriff auf dieses Verzeichnis und beim Erstellen der Datei insideeetc. Wenn wir jedoch versuchen, eine Datei von einem Slave-Knoten innerhalb des Testverzeichnisses zu erstellen, wird der Fehler "Berechtigung verweigert" angezeigt.
Wenn wir ein Verzeichnis von einem NFS-Client-Computer erstellen, sieht es so aus:
# sudo mkdir /home/ubuntu/data/Test2
# sudo ls -all /home/ubuntu/data
drwxr-xr-x 2 root root 4096 Jul 5 07:19 Test
drwxr-xr-x 2 nobody nogroup 4096 Jul 5 07:21 Test2
Es scheint also, dass der Root-Benutzer des NFS-Clients beim Schreiben in NFS-Verzeichnisse nobody @ nogroup zugeordnet ist und daher nicht in Verzeichnisse schreiben kann, die vom Root-Benutzer auf dem NFS-Server erstellt wurden. Wir müssen den Root-Benutzer einer NFS-Clinet dem Root-Benutzer eines NFS-Servers zuordnen, damit beide Benutzer frei mit Verzeichnissen arbeiten können, unabhängig davon, wo sie erstellt wurden.