Ich habe einen Server mit Ubuntu 18.04 und NFS-Setup. Ich habe mehrere Dienste, die Dateien in dieser Freigabe ablegen/bearbeiten, und andere Clients, die über das Netzwerk darauf zugreifen. Ich möchte, dass der NFS-Server die Standardberechtigungen für alle neuen Dateien/Ordner auf 775 setzt.
Ich habe s
ein Flag für den Ordner gesetzt, damit alle neu erstellten Dateien und Ordner dieselbe Gruppe erben, sodass alle Benutzer dieser Gruppe Dateien in diesem Ordner erstellen und ändern können. Aber ich kann NFS nicht dazu zwingen. Es wurden nur neue Dateien mit 644 und Ordner mit 2755 erstellt.
Hier ist meins/etc/exports/
/srv/nfs 192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb 192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)
1002 ist eine nfs
Benutzer-ID.
Ich habe umask und acl ausprobiert, beides ohne Erfolg.
Ich habe ein Homedir für den NFS-Benutzer erstellt und umask 002
darin platziert ~/.profile
.
Ich habe versucht, die ACL für den freigegebenen Ordner festzulegen
/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .
/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
Ich habe versucht, die NFS-Serverkonfiguration unter zu ändern /lib/systemd/system/nfs-server.service
und dort UMask=002
den [Service]
Abschnitt hinzuzufügen. Das hat bei einigen anderen Diensten, die ich selbst erstellt habe, funktioniert, aber nicht bei NFS.
Ich starte den NFS-Dienst neu und starte sogar nach all diesen Änderungen neu. Wenn ich die Datei von meinem Laptop in eine Freigabe kopiere, hat sie immer noch 644 Berechtigungen
drwxr-sr-x+ 2 nfs nfs 4096 Apr 5 20:34 acl2
-rw-r--r-- 1 nfs nfs 434506 Mar 7 21:31 acl_test.png
---BEARBEITEN---
Hier sind die ACL-Ausgaben für Dateien und Ordner
/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--
/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
---AKTUALISIERUNG---
Ich habe überprüft, dass mein Server NFS v2-3-4 ausführt, aber mein Client stellt die Verbindung über v3 her und ich kann es nicht überschreiben. Ich werde versuchen zu überprüfen, ob v4 das Problem behebt, wenn ich es zum Laufen bekomme.
Ich habe die Suche nach einer sauberen Lösung vorerst aufgegeben und werde einfach einen Cron-Job ausführen, der die Berechtigungen regelmäßig überprüft und korrigiert.
Antwort1
Erstens funktionieren die Dinge, die Sie mit umask versuchen, nicht. umask ist eine Sache pro Prozess, und der Prozess, auf den es ankommt, ist der Prozess, der die Datei erstellt. Die umask des NFS-Benutzers auf dem NFS-Server (falls Sie das gemeint haben) spielt keine Rolle, wenn die Dateien vom NFS-Benutzer auf einem NFS-Client erstellt werden, und die umask des NFS-Serverdienstes selbst sollte überhaupt keine Auswirkungen haben.
Als nächstes erwähnen Sie, dass Sie die falschen Berechtigungen erhalten, wenn Sie eine Datei in die NFS-Freigabe kopieren. Vorausgesetzt, Sie meinen wörtlich „kopieren“, wie beim „cp“-Befehl, ist dies kein gültiger Test. Der cp-Befehl weist verschiedene spezielle Verhaltensweisen auf, wenn es um Berechtigungen geht – im Gegensatz zu den meisten Programmen erstellt er nicht einfach eine Datei und lässt die Standardberechtigungen bestehen, sondern geht tatsächlich danach zurück und manipuliert die Berechtigungen dafür. Hier ist eine Stelle, an der dies in der Vergangenheit diskutiert wurde:
https://serverfault.com/questions/183800/why-does-cp-not-respect-acls
Ich verwende den Befehl „touch“, um Dateien für diese Art von Tests zu erstellen. Probieren Sie es aus, und Sie werden möglicherweise feststellen, dass Ihr ACL-Setup bereits einwandfrei funktioniert, nur der Befehl cp beachtet bestimmte Dinge nicht.