Wie werden die Berechtigungen für den NFS-Ordner richtig festgelegt? Genehmigung am Montageende verweigert.


46

Ich versuche, eine Verbindung zu einem NFS-Ordner auf meinem Entwickler-Server herzustellen. Der Besitzer des Ordners auf dem Dev-Server ist Darren und Group Darren.

Wenn ich es mit dem Festplatten-Dienstprogramm exportiere und auf meinen Mac mounte, wird es gemountet, aber wenn ich versuche, den Ordner zu öffnen, wird angezeigt, dass ich keine Berechtigungen habe. Ich habe rw, sync und no_subtree_check gesetzt. Der Benutzer auf dem Mac ist ein Haufen Gruppen.

Muss dieselbe Gruppe und derselbe Benutzer festgelegt sein, um auf den Ordner zugreifen zu können?


2
Vielen Dank für Ihre Frage, dieser Thread hat das Problem für mich gelöst! Aber bitte nimm die Antwort mit den meisten positiven Stimmen an.
Mamiu

Antworten:


60

NFS basiert auf der RPC-Authentifizierung. Bei NFS Version 3 ist AUTH_UNIX der häufigste Authentifizierungsmechanismus. Die Benutzer-ID und die Gruppen-ID des Client-Systems werden bei jedem RPC-Aufruf gesendet, und die Berechtigungen, die diese IDs für die Datei haben, auf die zugegriffen wird, werden auf dem Server überprüft. Damit dies funktioniert, müssen UID und GID auf dem Server und den Clients identisch sein. Sie können jedoch alle Zugriffe als einzelne Benutzer und Gruppen erzwingen, indem Sie die Exportoptionen all_squash, anonuid und anongid kombinieren. all_squash ordnet alle UIDs und GIDs dem anonymen Benutzer zu, und anonuid und anongid legen die UID und GID des anonymen Benutzers fest. Wenn Ihre UID und GID auf Ihrem Entwicklungsserver beispielsweise beide 1001 sind, können Sie Ihr Ausgangsverzeichnis mit einer Zeile wie der folgenden exportieren

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Ich bin mit NFS Version 4 weniger vertraut, aber ich denke, Sie können rpc.idmapd auf den Clients einrichten, um die UID und GID zu ändern, die sie an den Server senden.


7
Ich bin auf diese Antwort gestoßen und habe versucht, ein Apple OS X Yosemite nfs-Problem zu lösen. Diese Antwort ist viel relevanter und genauer als die akzeptierte Antwort. Es ist weder ratsam noch machbar, UID / GID systemübergreifend abzugleichen. Ein Root-Benutzer auf System A ist wahrscheinlich kein Root-Benutzer auf System B.
Allan

28

Wenn Sie NFS mounten, müssen Ihre Berechtigungen, mit denen Sie es mounten, mit denen auf dem Server übereinstimmen. Wenn Ihr Benutzer beispielsweise nur über Lesezugriff verfügt, werden beim Mounten mit Lese- / Schreibzugriff dieselben Fehler angezeigt, die Sie in Ihrem Beitrag erwähnt haben, wenn Sie versuchen, den Mount tatsächlich zu laden. Leider wird dies NUR beim Zugriff auf den Ordner angezeigt, nicht wenn Sie ihn tatsächlich einhängen.

Sie möchten auch sicherstellen, dass der Benutzer NFS wie auf dem Server ausgeführt wird und der Benutzer auf dem Client dieselbe UID und GID verwendet. Sie können diese Werte überprüfen, indem Sie sie id darrensowohl auf dem Server als auch auf dem Client ausführen. Wenn die Werte für UID und GID nicht übereinstimmen, können Sie sie bearbeiten. /etc/passwdVergewissern Sie sich jedoch, dass Sie verstanden haben, was Sie tun, bevor Sie Werte willkürlich ändern.

Einige gute Quellen:

Ich hoffe das hilft!


Ja, ich hätte nicht versuchen sollen, die UID zu ändern. Ich muss jetzt meinen Server wiederholen. Wie würde man die UID und GID imitieren? Ist es wirklich so kompliziert?
Darren

Leider ist NFS meiner Erfahrung nach extrem anfällig, und ja - es kann so kompliziert sein. Normalerweise benötigen Sie einen dedizierten NFS-Benutzer mit einer bestimmten UID / GID auf jedem Server / Client, damit Sie nicht auf dieses Problem stoßen. Wenn Sie in Ihrer Entwicklungsumgebung die Wahl haben (dh es muss kein NFS verwendet werden), lässt die Verwendung von SSHFS Ihre Entwicklungsprobleme verschwinden, repliziert jedoch nicht die gleiche Funktionalität wie ein Produktionsserver NFS.
Andrew M.

Glaubst du, Samba ist eine andere Lösung? Ich habe es mit Windows ohne Probleme verwendet und denke, dies ist der Weg, den ich gehen muss, obwohl ich einen Mac für die Entwicklung meiner Anwendung verwende.
Darren

Das ist sicherlich eine andere Möglichkeit, wenn Sie bereit sind, es einzurichten.
Andrew M.

2
Ich würde zögern zu sagen, dass NFS zerbrechlich ist. Es ist ein seit langem etabliertes Protokoll für Dateidienste. Für NFS gibt es nur zwei Anforderungen: synchronisierte UID / GID zwischen den Clients und synchronisierte Zeit zwischen den Clients und dem Server. Früher wurde NIS zum Synchronisieren von Benutzerinformationen verwendet, aber LDAP ist eine sicherere Wahl für neue Bereitstellungen im letzten Jahrzehnt.
Jeff Strunk

2

Stimmen Ihre UIDs und GIDs auf beiden Servern überein? Das ist, was es verwendet, um den Zugriff zu kontrollieren und nicht den Login- und Gruppennamen.


-2

Für mich wurde das Problem behoben, indem eine _netdevMontageoption auf dem Client bereitgestellt wurde .

Dh dies hinzufügen zu /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.