Ich konnte die Standard-ACL-Berechtigungen für neue Dateien wie folgt festlegen:
sudo setfacl -Rdm u:usernamehere:rwx /var/www/path/to/files
Dies scheint allen neuen Dateien die folgende Berechtigung zu erteilen:
-rw-r-----+
Ich hoffe, dass neue Dateien stattdessen die folgende Berechtigung erhalten:
-rw-r--r--+
Falls es einen Unterschied macht: Ich verwende CentOS.
Wir sind für jede Hilfe sehr dankbar.
Danke!
Antwort1
Beachten Sie zunächst, dass Dateien ACLs, die ACL-Einträge für benannte Benutzer oder Gruppen haben, auch eineACL-MaskeEintrag, der die von diesen ACL-Einträgen und dem Gruppeneigentümereintrag erteilten Berechtigungen beschränkt. Der Maskeneintrag zeigt die Gruppenberechtigungen für ls
und andere Dienstprogramme an, die nur die herkömmlichen Berechtigungsbits berücksichtigen.
Wenn Ihr also ls
anzeigt -rw-r--r--+
, ist die ACL-Maske r--
, was bedeutet, dass die Berechtigungs-ACL u:usernamehere:rwx
als fungiert u:usernamehere:r--
. Das ist vielleicht nicht das, was Sie wollen. Beachten Sie andererseits, dass u:usernamehere:rwx
sich von unterscheidet u::rwx
, selbst für Dateien, die Eigentum von sind usernamehere
. Der erste ist ein benannter Eintrag, der durch die Maske begrenzt ist, während der zweite der Eintrag für den Dateieigentümer ist, der istnichtbegrenzt.
Die Idee hinter der Maske besteht darin, dass ein Tool, das das Äquivalent von ausführt, chmod go-rwx
die Datei trotzdem für alle außer dem Eigentümer unzugänglich machen kann. Sie können den Maskeneintrag mit entfernen setfacl -x m:: filename
, aber das funktioniert nur, wenn keine benannten Benutzer- oder Gruppeneinträge vorhanden sind.
In jedem Fall können Sie demselben Befehl mehr als einen Standardeintrag hinzufügen. Dadurch werden Standardeinträge so festgelegt, dass der Dateibesitzer die Berechtigungen erhält rwx
, die Maske auf gesetzt ist r--
und die Berechtigungen für „andere“ auf gesetzt sind r--
:
$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path
Möglicherweise möchten Sie auch für den Gruppenbesitzer explizit eine Standard-ACL festlegen ( g::
), da der Eintrag in jedem Fall angezeigt wird (mit den Werten, die wahrscheinlich aus den Berechtigungsbits stammen). Hier ist beispielsweise der Eintrag für den Gruppenbesitzer nicht vollständig wirksam, da die Maske ihn einschränkt:
default:user::rwx
default:group::r-x #effective:r--
default:mask::r--
default:other::r--
Eine im Verzeichnis erstellte Datei wird ls
als angezeigt -rw-r--r--+
.
Wenn Sie hingegen nur möchten, dass der benannte Benutzer die von Ihnen angegebenen Berechtigungen erhält, können Sie das Maskenfeld weglassen. setfacl
Es wird dann basierend auf den Berechtigungen festgelegt, die Sie für die tatsächlichen ACL-Einträge verwendet haben:
setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path
Eine im Verzeichnis erstellte Datei wird jetzt in ls
als -rw-rw-r--+
und in angezeigt getfacl
:
user::rw-
user:usernamehere:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
Die Maske fehlt, x
da ich die Datei mit erstellt habe touch
und sie die Berechtigungen verwendet 0666
, wodurch die x
Bits maskiert werden.