Linux NFS erstellt eine Maske und erzwingt ein Benutzeräquivalent

11

Ich habe zwei Linux-Server:

Dateiserver
Debian 5.0.3 (2.6.26-2-686)
Samba Version 3.4.2

Apache
Ubuntu 10.04 LTS (2.6.32-23-generic)
Apache 2.2.14

Ich habe eine Reihe von Samba-Freigaben auf dem Dateiserver, damit ich von Windows-PCs aus auf Dateien zugreifen kann. Ich exportiere auch /data/www-dataauf den Apache- Server, auf dem ich es gemountet habe /var/www.

Das Setup ist in Ordnung, außer wenn ich Dateien auf dem NFS-Mount erstellen möchte. Am Ende habe ich Dateien, die von Apache nicht gelesen oder von anderen Benutzern auf meinem System nicht geändert werden können.

Mit Samba kann ich angeben force user, force group, create maskund directory mask, und dies stellt sicher , dass alle Dateien mit geeigneten Berechtigungen für meine Apache-Webserver erstellt werden. Ich kann mit NFS keinen Weg finden, dies zu tun. Gibt es eine Möglichkeit, Berechtigungen und Eigentumsrechte mit NFS zu erzwingen - fehlt mir etwas Offensichtliches?

Obwohl ich ziemlich viel Zeit mit Linux verbracht habe und mich von Windows entwöhne, muss ich mich immer noch nicht mit Linux-Berechtigungen auseinandersetzen ... Wenn dies nicht der richtige Weg ist, bin ich offen für alternative Vorschläge.

Mike
quelle

Antworten:

12

Wenn Sie von Windows kommen, werden Sie feststellen, dass NFS ... anders ist.

Das Problem, auf das Sie stoßen, ist ziemlich häufig. NFS leitet die UID und GID der Dateien / Verzeichnisse zwischen den Computern hin und her, unter der Annahme, dass die Benutzer- und Gruppen-IDs auf beiden identisch zugeordnet sind . Dies bedeutet, dass Sie eine Situation bekommen können, in der die UID / GID auf dem Server an einen NFS-Client zurückgegeben wird, aber nicht mit der des Clients /etc/passwdoder übereinstimmt /etc/group, was bedeutet, dass kein Zugriff erfolgt.

In der (fernen) Vergangenheit wurde dies mit NIS und NIS + zusammengeführt, obwohl es andere Schemata gibt, die in diesen Rahmen eingeklemmt wurden (Sambas Winbind ist eines davon). Dies erfordert jedoch einen zentralen ID-Server, gefolgt von vielen Handfixing-Berechtigungen.

Es gibt verschiedene Möglichkeiten, dies zu beheben. Am billigsten / schnellsten ist es jedoch, auf beiden Computern eine Gruppe mit derselben Gruppen-ID-Nummer zu erstellen (z. B. Gruppen-ID 50000) und die Gruppenbits auf dem Dateiserver zu setzen, während der entsprechende Benutzer zum hinzugefügt wird Gruppe auf dem Client; Verwenden Sie dann die Gruppenberechtigungen für die Dateien, um den Zugriff zu steuern. Keine gute Lösung, aber es wird funktionieren. Beachten Sie, dass Sie möglicherweise Probleme mit Diensten haben, deren Gruppe zur Laufzeit explizit geändert wird (auch bekannt als Privledge Drop), und dass Sie möglicherweise die Einstellung ändern müssen, mit der gesteuert wird, welche Gruppe zur Laufzeit angenommen wird, um sicherzustellen, dass es sich um die von Ihnen erstellte Gruppe handelt.

Für Dateien, die über eine Windows-Freigabe (auch bekannt als Samba) eingehen, wird einfach erzwungen, dass die Gruppe mit der von Ihnen erstellten identisch ist. Auf diese Weise erhalten alle Dateien automatisch die "richtige" GID.

Avery Payne
quelle
Vielen Dank für die überlegte Antwort. Ich werde mich mit der Methode der Gruppenbits befassen und Sie wissen lassen, wie es mir geht.
Mike
Ich habe eine www-dataGruppe auf dem Dateiserver erstellt, die erforderlichen Benutzer zugewiesen und dann www-dataauf beiden Servern dieselbe Gruppen-ID festgelegt. Ich habe auch die Gruppenbits auf dem /data/www-dataOrdner mit gesetzt chmod -R g+s /var/www-data. Es funktioniert jetzt perfekt. Danke für Ihre Hilfe.
Mike
Froh das zu hören!
Avery Payne
Es wäre schön, wenn NFS dies für Mac-Clients tun könnte.
d -_- b
9

Sie können auch die all_squashOption verwenden, mit der alle exportierten Dateien und Ordner anonymisiert werden (Benutzer und Gruppe) und an eine bestimmte GID und UID angehängt werden.

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

Das Problem dabei ist, dass alle Benutzer auf dem apacheServer Ihren Mount-Punkt nobody nobodyals Benutzer & Gruppe sehen und in den Mount schreiben können (aber auf dem Samba-Server werden die Dateien trotzdem als <your UID>/ erstellt <your GID>).

Anthony O.
quelle
Das hat mein Problem gelöst!
Luciano Andress Martini