Ich versuche, Standardberechtigungen für meine Verzeichnisstruktur festzulegen acl
. Ich hätte gerne die folgenden Standardberechtigungen für Verzeichnisse bzw. Dateien:
drwx--x---
-rw-r-----
aber wenn ich die Standardberechtigungen nur auf group
Folgendes einstelle x
:
setfacl -R -d -m g::x my_dir
dann haben neu erstellte Verzeichnisse die gewünschten Berechtigungen, aber neu erstellte Dateien haben -rw-------
statt -rw-r-----
. Mit anderen Worten, ich versuche, r
die Berechtigungen für Verzeichnisse zu entfernen, während r
die Berechtigungen für Dateien erhalten bleiben.
Wie kann ich das erreichen?
Antwort1
Linux/Solaris-ACLs unterstützen dies nicht. Sie können keine unterschiedlichen Standard-ACLs für Dateien und Verzeichnisse festlegen.
Verzeichnisse zu haben, die zwar durchsucht werden können, deren Inhalt jedoch nicht aufgelistet werden kann (ausführbar, aber nicht lesbar), ist selten nützlich. Die Tatsache, dass dies überhaupt funktioniert, ist ein bisschen ein historischer Zufall. Ja, es kann gelegentlich nützlich sein – aber brauchen Sie es wirklich? (Vielleicht möchten Sie dies als separate Frage stellen.)
Wenn Sie wirklich Verzeichnisse und Dateien mit unterschiedlichen Berechtigungen benötigen, können Sie die folgenden Möglichkeiten in Betracht ziehen:
- Lassen Sie Ihre Anwendung den Besitzer der von ihr erstellten Dateien ändern, anstatt sich auf intrinsische Dateisystemeigenschaften zu verlassen.
Machen Sie alles standardmäßig privat (
setfacl -d -m group:mygroup:X
) und verwenden Sie einen der Vorschläge inGroup+rx-Berechtigung nur in Verzeichnissen, die ACL verwenden?:- Stellen Sie gruppenöffentliche Dateien über Bind-Mounts und nicht direkt zur Verfügung.
- Beobachten Sie den Baum mit inotify und führen Sie ihn
setfacl
auf neuen regulären Dateien aus.
Antwort2
setfacl
Dies scheint weder mit noch mit möglich zu sein umask
, da beide keine separaten Standardeinstellungen für Dateien und Verzeichnisse zulassen.Weitere Optionen finden Sie in dieser ähnlichen Frage.. Wenn Sie eine Anwendung zwingen möchten, Verzeichnisse ohne Leseberechtigung und Dateien mit diesen Berechtigungen zu erstellen, können Sie dies entweder ändern oder LD_PRELOAD nur bei einer Binärdatei ausprobieren (obwohl das Schreiben einer Bibliothek dafür etwas übertrieben wäre).