Zugriffskontrolllisten (ACLs) können in Mehrbenutzerumgebungen verwendet werden, um einen granularen gemeinsamen Zugriff auf die Dateiverwaltung zu ermöglichen, ohne den Zugriff für alle Benutzer des Kontos zuzulassen. ACLs können entweder vom Eigentümer der Datei oder vom Kontoadministrator mithilfe von Bake.
ACLs gibt es in zwei Formen, einen aktiven Eintrag und Standard. Aktive ACL-Einträge werden aktiv auf die Datei oder das Verzeichnis angewendet, während Standard-ACL-Einträge auf Verzeichnisse auf Dateien angewendet werden, die in der Zukunft innerhalb dieses Verzeichnisses erstellt werden.
Verwendung von setfacl
ACLs können vom Terminal mit setfacl
auf alle v5+ Plattformen. setfacl
kann nur auf Dateien angewendet werden, die dem aktuellen Benutzer gehören. Für Dateien, die einem anderen Benutzer gehören, verwenden Sie file_set_acls
in Beacon (siehe unten) oder übernehmen Sie die Dateien zuerst mit file_chown in Beacon oder chown in sudo.
Die Syntax zum Setzen eines ACL-Eintrags lautet setfacl -m [d:]BENUTZERNAME:Berechtigungen DATEI
wo:
d:
ist ein optionaler Bezeichner, um die ACLs als Standard-ACLs und nicht als aktive ACLs anzuwenden- BENUTZERNAME ist der Benutzer des Kontos, auf das diese ACLs angewendet werden sollen
- ERMÄCHTIGUNGEN ist ein oktale Bitmaske zwischen 0 und 7 oder eine Sammlung von r,w,x, die jeweils Lese-/Schreib-/Ausführungsberechtigungen darstellen
- Der Befehl -m ... kann unendlich oft wiederholt werden, um neue Regeln auf andere Benutzer anzuwenden
- -R kann angegeben werden, um die Regeln rekursiv anzuwenden
Einfache Nutzung
$ setfacl -m user:tom:7 newdata.zip
$ getfacl newdata.zip
# Datei: newdata.zip
# Eigentümer: myadmin
# Gruppe: myadmin
benutzer::rw-
benutzer:tom:rwx
gruppe::r-
maske::rwx
andere::r--
Weitere Beispiele
- Einem zusätzlichen Benutzer Lesezugriff gewähren
setfacl -m u:lisa:r Datei
- Entzug des Schreibzugriffs für alle Gruppen und alle benannten Benutzer (unter Verwendung der Maske für effektive Rechte)
setfacl -m m::rx Datei
- Entfernen eines benannten Gruppeneintrags aus der ACL einer Datei
setfacl -x g:staff Datei
- Kopieren der ACL einer Datei in eine andere
getfacl file1 | setfacl --set-file=- file2
- Kopieren der Zugriffs-ACL in die Standard-ACL
getfacl --access dir | setfacl -d -M- dir
Weitere Lektüre
Sehen Sie sich die Manpage zu beiden setfacl und getfacl
Beacon verwenden
Bake bietet eine alternative Schnittstelle zu ACLs, die von mit file_set_acls und file_get_acls. ACLs, die über Beacon gesetzt werden, setzen traditionelle diskretionäre Zugriffsprüfungen außer Kraft, wenn sie als primärer Kontoinhaber angewendet werden; das bedeutet, dass Sie als primärer Benutzer jede ACL auf jeder Datei ändern können, während die Verwendung von setfacl vom Terminal aus erfordert, dass die Datei, die Sie anpassen, Ihnen gehört.
$ beacon eval file_set_acls /var/www/html redline 7
1
$ getfacl /var/www/html
getfacl: Führendes '/' aus absoluten Pfadnamen entfernen
# Datei: var/www/html
# Eigentümer: myadmin
# Gruppe: myadmin
benutzer::rwx
benutzer:redline:rwx
gruppe::r-x
maske::rwx
andere::r-x
Um Standard-ACLs festzulegen, geben Sie einen dritten Parameter an: Standard:1 und rekursiv anzuwenden, rekursiv:1
$ beacon eval file_set_acls /var/www/html/test redline 7 [default:1,recursive:1]
1
$ getfacl /var/www/html/test/foo
getfacl: Führendes '/' aus absoluten Pfadnamen entfernen
# Datei: var/www/html/test/foo
# Eigentümer: myadmin
# Gruppe: myadmin
#-Flags: -s-
benutzer::rwx
benutzer:redline:rwx 1TP3Wirksam:r-x
gruppe::rwx 1TP3Wirksam:r-x
maske::r-x
andere::--x
default:benutzer::rwx
vorgabe:benutzer:redline:rwx
vorgabe:gruppe::rwx
standard:maske::rwx
vorgabe:andere::--x
Um einen ACL-Eintrag für einen bestimmten Benutzer zu löschen, geben Sie keinen Berechtigungsparameter an:
$ beacon eval file_set_acls /var/www/html/test redline
$ getfacl /var/www/html/test/foo
getfacl: Führendes '/' aus absoluten Pfadnamen entfernen
# Datei: var/www/html/test/foo
# Eigentümer: myadmin
# Gruppe: myadmin
#-Flags: -s-
benutzer::rwx
Gruppe::rwx 1TP3Wirksam:r-x
maske::r-x
andere::--x
standard:benutzer::rwx
vorgabe:gruppe::rwx
vorgabe:maske::rwx
vorgabe:andere::--x
Und schließlich können Sie Benutzer mischen und anpassen:
$ beacon eval file_set_acls /var/www/html/test [redline:7,apache:7]
1
$ getfacl /var/www/html/test
getfacl: Führendes '/' aus absoluten Pfadnamen entfernen
# Datei: var/www/html/test
# Eigentümer: myadmin
# Gruppe: myadmin
benutzer::rwx
benutzer:apache:rwx
benutzer:redline:rwx
gruppe::r-x
maske::rwx
andere::r-x