Ich habe einige ACLs in einem Verzeichnis wie folgt definiert:
# owner: root
# group: root
user::rwx
group::r--
mask::r-x
other::r--
default:user::r--
default:group::r--
default:mask::r-x
default:other::r--
Ich möchte, dass alle neuen Dateien, die in diesem Ordner erstellt werden, u: apache: r-- und alle neuen Verzeichnisse u: apache: rx sind. Wie spezifiziere ich diese Absicht mithilfe von ACLs?
Ich habe es versucht -dm u:apache:rX
und es scheint nichts anderes zu tun als nurrx
overt htdocs # getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:apache:r--
group::r--
mask::r-x
other::r--
default:user::r--
default:user:apache:r--
default:group::r--
default:mask::r--
default:other::r--
overt htdocs # setfacl -dm u:apache:rx .
overt htdocs # touch blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r-x #effective:r--
group::r--
mask::r--
other::r--
overt htdocs # rm blah.txt
overt htdocs # setfacl -dm u:apache:rX .
overt htdocs # touch blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r-x #effective:r--
group::r--
mask::r--
other::r--
Die Großbuchstaben-X-Berechtigung scheint nur zum Festlegen aktueller Berechtigungen nützlich zu sein, nicht zum Festlegen von Standardberechtigungen:
overt htdocs # setfacl -x u:apache blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
group::r--
mask::r--
other::r--
overt htdocs # setfacl -m u:apache:rX blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r--
group::r--
mask::r--
other::r--
quelle
#effective
Text total verpasst ! Vielen Dank für die Erklärung, wie sich die Masken auf effektive Berechtigungen auswirken.Leider gibt es mit Linux-ACLs keine Möglichkeit, dies zu tun. Es ist wahr, dass die Maske genau das zu tun scheint, was Sie wollen, was effektive Berechtigungen betrifft. Wenn Sie jedoch das nächste Mal einen Vorgang ausführen, bei dem die Rechte-Maske bam neu berechnet wird , werden alle Ihre Dateien ausführbar gemacht.
Sie können sich auch einfach damit abfinden, dass alle Dateien in einer ACL ausführbar sind. Das ist eigentlich nur eine Annehmlichkeit und keine Sicherheitsfunktion, und solange Sie diese Ordner nicht in Ihrem $ PATH ablegen, sollte dies kein Problem sein. Wenn es Sie immer noch stört, besteht die einzige Möglichkeit darin, Ihre ACL-gesteuerten Ordner in einem Dateisystem abzulegen, das ohne Ausführungsoption bereitgestellt wird.
quelle
-d (oder --default) wird verwendet, um die Standardeinstellungen für das Verzeichnis so festzulegen, dass die darin erstellten Elemente die Dauerwellen erben (wie Sie es anscheinend tun).
Hier ist eine kurze Übersicht. http://www.vanemery.com/Linux/ACL/linux-acl.html#default
Es ist nicht möglich, dass Dateien einen Standard haben und Verzeichnisse einen anderen Standard haben.
Sie könnten ein Skript ohne Cron ausführen, das jede Minute ein Setfacl für alle Verzeichnisse ausführt - obwohl dies weniger als ideal für eine Lösung ist.
find / path / to / top / dir -typ d -exec setfacl -dm u: apache: rx {} \;
oder
find / path / to / top / dir -typ d | xargs setfacl -dm u: apache: rx
quelle
Dieser Beitrag über ACLs und Masken hat mir wirklich geholfen zu verstehen, wie ich tun soll, was ich wollte und warum.
Der fehlende Teil meines Verständnisses war, dass der Kernel beim Erstellen einer Datei einen Standardberechtigungssatz von 0666 und für neue Verzeichnisse von 0777 verwendet. Standardmäßig wird für Verzeichnisse das Ausführungsbit (Traverse) gesetzt.
Die ACL-Maske ist im Grunde eine Möglichkeit, eine
umask
auf Verzeichnis- / Datei- / Benutzerebene festzulegen.quelle