File ACL (Access Control Lists)

Maurice Goerke
14. Mai 2018
Lesezeit: 5 min
File ACL (Access Control Lists)

[et_pb_section bb_built=”1″][et_pb_row _builder_version=”3.0.105″][et_pb_column type=”4_4″][et_pb_text _builder_version=”3.0.105″ background_layout=”light”]

Wer viel und auch möglicherweise täglich die verschiedenen Funktionen von Linux nutzt (z. B elektronische Terminplanung, Administration oder Datenbanken), der sieht immer wieder, dass das Programm an bestimmten Stellen an seine Grenzen gerät. Grenzen, die auf der Nutzerseite in vielen Unternehmensabteilungen zahlreiche offene Fragen aufwerfen, z. B.:

[box]1. Wie kann ich in einem Linux System einzelnen Nutzern oder auch Gruppen gezielt Rechte an einzelnen Dateien und Verzeichnissen geben oder entziehen?

2. Wie kann ich eine einheitliche Vergabe von Rechten für neu angelegte Dateien oder Verzeichnissen erzwingen?

3. Wie kann ich solche Rechte einfach in einem Mehrbenutzersystem verwalten? [/box]

Die Antwort zu diesen Fragen ist einfach und schnell erklärt: Dies funktioniert mit Hilfe von Access Control Lists.

Und was genau sind ACLs?

Wörtlich übersetzt bedeutet Access Control List “Zugriffssteuerungsliste”, d. h. der Administrator hat so die Möglichkeit, über die grundlegenden Berechtigungen hinaus Benutzern oder Gruppen Rechte zu gewähren oder auch zu entziehen.

In welchen Steps das genau funktionieren kann, das erfahren Sie hier:
Neue Gruppe anlegen
Die klassischen Unixrechte erlauben nur Unterscheidung der Zugriffsrechte für den Besitzer, die besitzende Gruppe und Anderen (other). Will man genau einer weiteren Person Rechte auf eine Datei erteilen, muss man eine Gruppe anlegen, in der genau die Benutzer enthalten sind, die die Rechte bekommen sollen.

FAZIT: Für jede gewünschte Kombination von Benutzern benötigt man also eine eigene Gruppe, was unpraktikabel ist.

Minimale und erweiterte ACL:
ACLs werden daher grundsätzlich in zwei Klassen eingeteilt. Eine minimale ACL und eine erweiterte (engl. extended) ACL.

Welcher Eintrag für die Zugriffsrechte entscheidend ist, bestimmen folgende Regeln:
Die ACL wird von oben nach unten abgearbeitet.
Die erste zutreffende Regel gilt.

ACLs für Verzeichnisbäume
Man kann ACLs nicht nur für einzelne Dateien und Verzeichnisse setzen. Man kann ACLs auch gleichzeitig für Dateien und Verzeichnisse und (rekursiv mit dem Parameter -R) für komplette Verzeichnisbäume einschließlich bereits bestehender Dateien setzen
Berechtigungsbits

r – Leserechte
w – Schreibrechte
x – Ausführrechte

Minimale ACLs
Die minimalen ACLs bestehen ausschließlich aus drei unterschiedlichen Typen. Dazu gehören die Einträge für:

  • den owner (Besitzer),
  • die owning group (Besitzergruppe) und other ( Andere)

Erweiterte ACLs
Für die erweiterten ACLs gelten noch drei zusätzliche Einträge.

Diese Zugriffssteuerungsliste muss zusätzlich Folgendes enthalten:

  • mask (Maske)
  • named user (namentlich gekennzeichnete Benutzer), welcher mehrere Einträge enthalten darf, und
  • named group (namentlich gekennzeichnete Gruppe).

Festgelegte Rechte in den Einträgen owner und other sind immer wirksam. Alle restlichen Einträge (ausser mask) können entweder wirksam oder maskiert werden. Die Maske legt die maximalen Rechte fest, die ein anderer Benutzer als der Besitzer oder eine Gruppe haben kann. Das heißt, wenn ein Eintrag eine Gruppe die Lese- und Ausführrechte einräumt, die Maske aber nur Schreib- und Leserechte vorsieht, dann hat diese Gruppe auch nur Leserechte

 width=

Im Fall einer minimalen ACL — ohne mask Eintrag — werden die group class Berechtigungen dem owning group ACL-Eintrag zugeordnet

Im Fall einer erweiterten ACL — mit mask Eintrag — werden die group class Berechtigungen dem mask Eintrag zugeordnet.
Beispiel:
 width=

Dies ermöglicht uns eine reibungslose Interaktion von Anwendungen mit und ohne ACL-Unterstützung. Alle Rechte, die hier nicht widergespiegelt sind, wurden entweder in der ACL nicht gesetzt oder sind nicht effektiv. Werden Berechtigungsbits geändert, spiegelt sich dies in der ACL wider und umgekehrt.

Einrichten und Konfigurieren von ACLs
Bei den Dateisystemen ext3, ext4, JFS und XFS können ACLs standardmäßig gesetzt werden.
Installation
Das benötigte Paket für die Nutzung von Access Control List, libacl1, ist ab Ubuntu 9.04 bereits in der Standardinstallation enthalten. Die Programme setfacl und getfacl für die Bearbeitung von ACLs müssen dagegen nachinstalliert werden.

sudo apt-get install acl

 

Konfiguration
Um ACL zu aktivieren muss das Filesystem mit der acl Option gemountet werden. Man kann fstab benutzen um es auf dem System permanent zu machen.
Die ACL-Verwaltung läuft über zwei Programme:

  • setfacl dient zum Setzen und Löschen von ACLs
  • getfacl dient zum Auslesen von ACLs

Setzen von Rechten für Benutzer und Gruppen:
Man beachte, dass mehrere Rechtevergaben durch Kommas getrennt aufgelistet werden können:

setfacl -m u:BENUTZER:-,g:GRUPPE:RECHTE,... DATEI ...

 

Entfernen einzelner Einträge in der ACL:

setfacl -x u:BENUTZER,g:GRUPPE,... DATEI ...

 

Entfernen der gesamten ACL, so dass nur die klassischen Unixrechte zurückbleiben:

setfacl -b DATEI ...

 

Shellbefehle
chmod bearbeitet bei Dateien mit ACLs nicht die Gruppenrechte, sondern die Maske.
chown, chgrp funktionieren unverändert.

Die Besitzer und besitzenden Gruppen werden korrekt in der Ausgabe von getfacl hinter # angegeben und beim Dateizugriff mit der richtigen Priorität berücksichtigt
umask, touch, mkdir, mknod, mkfifo im Anlegen von Dateien (und Verzeichnissen und Fifos und Gerätedateien) wird umask ignoriert und durch eine etwaige Default-ACL in einem Verzeichnis ersetzt.

Vererbung von ACLs und Default-ACLs
Default-ACLs sind Vorlagen für ACLs neu angelegter Dateien und Unterverzeichnisse. Nur Verzeichnisse können eine Default-ACL enthalten. So bewirkt man, dass die Berechtigungen für neu angelegte Dateien und Unterverzeichnisse nicht vom erstellenden Prozess abhängen, sondern eine Eigenschaft des Verzeichnisses sind. Default-ACLs sehen aus wie ACLs, nur enthalten sie zusätzlich ein d: am Anfang.

Eine Default-ACL enthält immer:
1. Rechte für den Besitzer
2. Rechte für die besitzende Gruppe
3. Rechte für Andere

Das Setzen und Löschen der Default-ACLs geschieht wie bei den ACLs mit setfacl. Dabei setzt man entweder die Option -d oder man fügt vor die einzelnen Rechte ein d: ein.
Neu angelegte Unterverzeichnisse bekommen als ACL die Default-ACL des Oberverzeichnisses zugeordnet. Zusätzlich erben sie die Default-ACL als eigene Default-ACL.

Achtung!
Beim teilweisen oder vollständigen Entfernen von ACLs können unbeabsichtigt Rechte (wieder)erteilt werden, wenn ACLs zum Entziehen von Rechten gebraucht wurden.

[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]