ACLs für -rw-r--r--+ richtig setzen

ACLs für -rw-r--r--+ richtig setzen

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 lsund andere Dienstprogramme an, die nur die herkömmlichen Berechtigungsbits berücksichtigen.

Wenn Ihr also lsanzeigt -rw-r--r--+, ist die ACL-Maske r--, was bedeutet, dass die Berechtigungs-ACL u:usernamehere:rwxals fungiert u:usernamehere:r--. Das ist vielleicht nicht das, was Sie wollen. Beachten Sie andererseits, dass u:usernamehere:rwxsich 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-rwxdie 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 lsals 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. setfaclEs 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 lsals -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, xda ich die Datei mit erstellt habe touchund sie die Berechtigungen verwendet 0666, wodurch die xBits maskiert werden.

verwandte Informationen