Access Control Lists

Listig kontrollieren

Das langsam vergreisende Dateirechtesystem unter Linux stößt in der Praxis immer häufiger an seine Grenzen. Abhilfe versprechen die Access Control Lists bei voller Rückwärtskompatibilität – vorausgesetzt das Dateisystem spielt mit.

Ein elektronischer Terminplan ist eine feine Angelegenheit: Keine unleserliche Handschrift, nie wieder Kaffeeflecken und immer aktuell. Dazu können Kollegen Termine einsehen und bei Bedarf eigene dazusetzen. Diesen Komfort schätzt auch Alice. Um jedoch der Besatzung der tratschenden Buchhaltung nicht unnötig frisches Material zu liefern, setzte sie ihre Kalenderdatei strengen Zugriffsrechten aus: Sie selbst darf neue Termine eintragen, die restlichen Mitglieder ihrer Arbeitsgruppe nur lesend zugreifen. Allen anderen – und damit insbesondere der Buchhaltung – verbietet sie jeglichen Zugriff.

Damit wäre die Sache eigentlich erledigt, stünde nicht dieses neues Projekt ins Haus, bei dem Bob aus einer andere Abteilung befristet mit Alice zusammenarbeiten soll. Folglich muss sie auch dem neuen Experten Zugriff auf ihren Terminkalender gewähren.

An dieser Stelle stößt das eingesessene Dateirechtesystem unter Linux an seine Grenzen: Damit Bob die Datei mit dem Kalender lesen kann, müsste sie den Administrator bitten, den neuen Kollegen in ihre eigene Gruppe zu verschieben. Damit würde Bob aber auch alle anderen Dokumente aus Alice Team einsehen dürfen. Eine andere Möglichkeit wäre die vorübergehende Einrichtung einer komplett neuen Benutzergruppe, der sowohl Alice als auch Bob angehören. In diesem einfachen Beispiel wäre das noch praktikabel, in Unternehmen gestalten sich die Abhängigkeiten jedoch meist weitaus komplexer – die Folge sind viele unübersichtliche Gruppen.

Einen Ausweg versprechen die Access Control Lists, kurz ACLs, die es sogar beinahe zu einem eigenen POSIX-Standard gebracht hätten (siehe Kasten "POSIX und die ACLs" ). ACLs ergänzen das alte Unix-Rechtesystem um eine flexible Zugriffssteuerung, die jede Datei bei Bedarf mit weiteren Berechtigungen für beliebige Gruppen oder Benutzer ausstattet. Alice muss dazu nicht einmal mehr den Administrator bemühen, sondern setzt Bob einfach auf die Liste der berechtigten Benutzer. Sogar Standardrechte für alle neue Dateien darf man vorgeben. Nach außen hin arbeiten die ACLs vollkommen transparent, womit sie weitestegehend abwärtskompatibel bleiben. Alte Linux-Programme laufen daher wie gewohnt.

POSIX und die ACLs

Im Internet und vielen Dokumentationen trifft man häufig auf die Bezeichnung der POSIX ACLs (Portable Operating System Interface), was auf einen weltweit gültigen Standard schließen lässt. Zwar gab es Ende des letzten Jahrhunderts entsprechende Entwürfe (POSIX 1003.1e, häufig einfach nur POSIX.1e genannt, sowie 1003.2c), die aber aus gleich mehreren Gründen niemals zur Verabschiedung kamen. Die meisten Implementierungen der Access Control Lists orientieren sich jedoch nach wie vor an diesen Entwürfen, so auch die unter Linux. Um die enge Anlehnung zu unterstreichen, verwenden viele Autoren den Begriff der POSIX ACLs. Wer sich für die alten POSIX Entwürfe interessiert, sollte einen Blick auf [1] riskieren.

Rotierende Scheiben

ACLs einsetzen zu können, setzt zunächst ein Dateisystem voraus, das mit ihnen umgehen kann. Dies ist dann der Fall, wenn sie so genannte Extended Attributes unterstützen. Dabei spendiert das Dateisystem jeder Datei eine Liste mit zusätzlichen Metadaten. Letztere könnten beispielsweise der Autor des Dokumentes oder, wie in diesem Fall, die Liste mit Zugriffsrechten sein.

Mit ACLs umgehen können derzeit Ext2, Ext3, Ext4, ReiserFS, JFS und XFS. Die letzten beiden unterstützen die erweiterten Rechte von Haus aus, bei allen anderen muss der Administrator sie explizit mit der Mountoption »acl« aktivieren:

mount -o remount,acl,defaults 
<!-- START: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->
Mountpoint
<!-- STOP: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->

Die meisten aktuellen Distributionen setzen den entsprechenden Parameter schon bei der Installation in der »/etc/fstab« :

/dev/hda1   /   ext3   acl,user_xattr 1 1

Bei den eingebauten Platten muss man sich folglich um nichts mehr kümmern. ACLs funktionieren auch via NFS ab NFSv3, vorausgesetzt der Server läuft mit einem Datei- und Betriebssystem, das ACLs unterstützt.

Kerniges

Neben dem Dateisystem muss auch der Kernel mit den ACLs umgehen können – schließlich ist er es, der letztendlich den Zugriff auf eine Datei gewährt oder verweigert. Alle aktuellen Kernel der 2.6er Reihe bringen entsprechende Unterstützung mit, für die veraltete 2.4.x existieren Patches. Die großen Distributionen aktivieren in der Regel standardmäßig die erweiterten Rechte für alle genannten Dateisysteme, so dass man direkt mit der Rechtevergabe loslegen kann. Sicherheit gewährt darüber ein Aufruf von:

grep "XATTR\|POSIX_ACL" /boot/config-↩
$(uname -r)

Für das gewünschte Dateisystem sollten dort zwei Einträge mit einem »=y« stehen, für Ext2 beispielsweise:

CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y

Andernfalls kommt man nicht drum herum, den Kernel neu zu erstellen.

Fensterln mit ACLs

Windows ab XP, sowie die NT-Linie, kennen ebenfalls ACLs, brauchen dafür aber ein NTFS-Dateisystem als Basis. Auf das kann Linux zwar mittlerweile zugreifen, aber noch nicht vollständig dessen erweiterte Funktionen nutzen – worunter leider auch die ACLs fallen.

Immerhin unterstützt Samba ACLs, vorausgesetzt das unterliegende Dateisystem unterstützt die erweiterten Rechte. Die auf einem solchen Server abgelegten Dateien behalten ihre Berechtigungen, Windows behandelt sie so, als lägen sie auf einem normalen NTFS-Laufwerk. Ein Problem bleibt jedoch auch hierbei: Da sich die von Windows und Linux verwendeten ACLs voneinander unterscheiden, liefert Samba den Windows-Benutzern derzeit nur einen Teil des ansonsten gewohnten Funktionsumfangs.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023