Table of Contents

ACL (Access Control List)

(C) 2008-2013 T.Birnthaler/H.Gottschalk <howtos(at)ostc.de>

Version 1.10 (16.01.2016)

Dieses Dokument beschreibt die Funktionalität und die Einrichtung von "Access Control List" (ACL) unter UNIX/Linux.

Basis-ACL

Eine ACL ist EIN Satz der Rechte "rwx", die einem Benutzer, einer Gruppe oder "Allen anderen" für eine Datei/Verz. zugeordnet ist. Die 9 UNIX-Standardrechte werden als "degenerierte ACL" bezeichnet, die genau 3 Elemente enthält. Diese 3 Elemente werden auch als "Basiseinträge" (base entries) bezeichnet.

Besitzer (u)ser
Besitzer-Gruppe (g)roup
Alle anderen (o)ther

Solange noch keine weitere ACL gesetzt ist, werden die 3 Basiseinträge von "ls -l" folgendermaßen angezeigt (nach "chmod 755 DATEI"):

  u   g   o
-rwx r-x r-x tsbirn users ... DATEI

Mit getfacl werden diese Basiseinträge so dargestellt:

# file: DATEI
# owner: tsbirn
# group: users
user::rwx
group::r-x
other::r-x

Erweiterte ACL

Sobald mit setfacl eine ACL hinzugefügt wird, gibt es neben den Basiseinträgen auch "Benannte Einträge"(named entries) und eine "Maske" (mask). Als Startwert der Maske wird die "Summe" der Einträge verwendet, auf die sie wirkt.

Eintrag-Typ Name Maske
Basis-Besitzer basic user nein
Benannter Benutzer named user ja
Basis-Gruppe basic group ja
Benannte Gruppe named group ja
Basis Alle anderen basic other nein
Maske effective mask

Sobald EINE ACL gesetzt ist, hier mit:

setfacl -m user:kurs1:-w- DATEI

zeigt "ls -l" die 3 Basiseinträge folgendermaßen an (d.h. durch ein "+" am Ende der normalen Rechteliste wird angezeigt, dass "echte" ACLs vorhanden sind und die mittleren 3 Rechte "rwx" nicht die Rechte der Basis-Gruppe enthalten, sondern die ACL-"Maske":

  u  m  o
-rwxrwxr-x+ tsbirn users ... DATEI

Mit "getfacl" werden die ACL-Einträge so dargestellt:

# file: DATEI
# owner: tsbirn
# group: users
user::rwx
user:kurs1:-w-
group::r-x
mask::rwx
other::r-x

ACL-Maske

Die ACL-Maske wird auf ALLE Benannten Einträge (Benutzer + Gruppen) und die Basis-Gruppe angewendet und lässt für alle von diesen Einträgen gesetzten Rechte nur die in der Maske gesetzten Rechte durch ("Effektiv" wirksame Rechte). Nach

setfacl -m mask:r-- DATEI

ergibt "ls -l" folgende Ausgabe:

  u  m  o
-rwxr--r-x+ tsbirn users ... DATEI

Mit "getfacl" werden folgende ACL-Einträge angezeigt:

# file: DATEI
# owner: tsbirn
# group: users
user::rwx
user:kurs1:-w-   #effective:---
group::r-x       #effective:r--
mask::r--
other::r-x

Die Maske wird bei JEDER Änderung eines Eintrages, auf den sie wirkt, auf die "Summe" ALLER Einträge gesetzt, auf die sie wirkt (also "angepasst" = "recalculated"). Nach

setfacl -m group:ostc:--x DATEI

ergibt "ls -l" folgende Ausgabe:

  u  m  o
-rwxrwxr-x+ tsbirn users ... DATEI

Mit "getfacl" werden folgende ACL-Einträge angezeigt:

# file: DATEI
# owner: tsbirn
# group: users
user::rwx
user:kurs1:-w-
group::r-x
group:ostc:--x
mask::rwx
other::r-x

Setzt man die Maske anschließend erneut, dann reduziert sie wieder die Rechte der Einträge, auf die sie wirkt. Nach

setfacl -m mask:r-- DATEI

ergibt "ls -l" folgende Ausgabe:

  u  m  o
-rwxr--r-x+ tsbirn users ... DATEI

Mit "getfacl" werden folgende ACL-Einträge angezeigt:

# file: DATEI
# owner: tsbirn
# group: users
user::rwx
user:kurs1:-w-   #effective: ---
group::r-x       #effective: r--
group:ostc:--x   #effective: ---
mask::r--
other::r-x

Hinweise

(Quelle)