Dieses Tutorial erklärt Zugriffskontrolllisten unter Linux, wofür sie verwendet werden und wie man sie verwaltet.

Als Systemadministrator verbringen Sie wahrscheinlich viel Zeit mit der Konfiguration von Berechtigungen für Benutzer und Gruppen auf Ihrem System.

Dateiberechtigungen sind bereits recht praktisch, um Verzeichnissen oder Dateien Lese-, Schreib- oder Ausführungsberechtigungen zu erteilen.

Aber was ist, wenn wir eine präzisere Methode benötigen, um Berechtigungen für Ordner oder Dateien zu vergeben?

Was ist, wenn ich einem bestimmten Benutzer oder einer bestimmten Gruppe, die nicht der aktuelle Eigentümer der Datei ist, Zugriff auf eine Datei geben möchte?

Das ist genau das, was Zugriffskontrolllisten, auch kurz ACL genannt, auf einem Linux-System lösen.

In der heutigen Anleitung schauen wir uns die Zugriffskontrolllisten ganz genau an, was sie sind und wie sie verwendet werden, um ein Linux-System richtig zu konfigurieren.

Bereit?

Inhaltsverzeichnis

Was Sie lernen werden

Wenn Sie diesem Tutorial bis zum Ende folgen, werden Sie die folgenden Themen kennenlernen:

  • Was Zugriffskontrolllisten sind und wie sie mit dem ls-Befehl ausgelesen werden können;
  • Wie man mit dem Befehl setfacl grundlegende Berechtigungen für eine Datei setzt:
  • Wie man Zugriffskontrolllisten mit dem Befehl getfacl liest;
  • Was die Maske der Zugriffskontrollliste ist und wie sie gelesen werden sollte;
  • Was die Standardeinstellungen für Zugriffskontrolllisten sind und wie sie effektiv genutzt werden können

Das ist ein ziemlich langes Programm, also lassen Sie uns ohne weiteres mit einer kurzen Definition dessen beginnen, was Zugriffskontrolllisten sind.

Grundlagen der Zugriffskontrolllisten unter Linux

Unter Linux gibt es zwei Möglichkeiten, Berechtigungen für Benutzer und Gruppen festzulegen: mit regulären Dateiberechtigungen oder mit Zugriffskontrolllisten.

Zugriffskontrolllisten-Definition

Zugriffskontrolllisten werden in Linux-Dateisystemen verwendet, um benutzerdefinierte und individuellere Berechtigungen für Dateien und Ordner festzulegen. ACLs erlauben es Dateibesitzern oder privilegierten Benutzern, Rechte an bestimmte Benutzer oder Gruppen zu vergeben.

In Linux sind, wie Sie wahrscheinlich wissen, die Rechte in drei Kategorien unterteilt: eine für den Eigentümer der Datei, eine für die Gruppe und eine für die anderen.

In manchen Fällen möchten Sie jedoch einem bestimmten Benutzer Zugriff auf ein Verzeichnis gewähren (z. B. das Ausführungsrecht), ohne diesen Benutzer in die Gruppe der Datei aufnehmen zu müssen.

Das ist genau der Grund, warum Zugriffskontrolllisten überhaupt erfunden wurden.

Zugriffskontrolllisten auflisten

Unter Linux werden Zugriffskontrolllisten nicht aktiviert, wenn Sie eine neue Datei oder ein neues Verzeichnis auf Ihrem Rechner erstellen (außer wenn ein übergeordnetes Verzeichnis einige ACLs vordefiniert hat).

Um zu sehen, ob Zugriffskontrolllisten für eine Datei oder ein Verzeichnis definiert sind, führen Sie den Befehl ls aus und suchen Sie nach einem „+“-Zeichen am Ende der Berechtigungszeile.

$ ls -l

Um den Unterschied zu verdeutlichen, hier der Unterschied beim Auflisten von Dateien auf einer Minimalinstanz.

Nun, da Sie einige Grundlagen über Zugriffskontrolllisten haben, lassen Sie uns sehen, wie Sie grundlegende ACL für Ihre Dateien und Verzeichnisse erstellen können.

Erstellen von Zugriffskontrolllisten unter Linux

Bevor Sie mit ACL-Befehlen beginnen, ist es wichtig, dass die Pakete auf Ihrem Host installiert sind.

Überprüfen der Installation von ACL-Paketen

Es könnte sein, dass dies nicht der Fall ist, wenn Sie sich für einen minimalen Server entschieden haben.

Starten Sie, indem Sie die Hilfe zu setfacl überprüfen, indem Sie den folgenden Befehl ausführen

$ setfacl --help

Wenn Ihr Host den Befehl setfacl nicht finden kann, stellen Sie sicher, dass die notwendigen Pakete für die ACL-Verwaltung installiert sind.

$ sudo apt-get install acl -y

Beachten Sie, dass Sie unter Debian 10 sudo-Rechte benötigen, um diesen Befehl auszuführen.

Starten Sie den Befehl setfacl und stellen Sie sicher, dass Sie diesmal die Hilfe-Befehle sehen können.

Nun, da Ihr Host korrekt konfiguriert ist, lassen Sie uns sehen, wie der Befehl setfacl funktioniert.

Zugangskontrolllisten mit setfacl einstellen

Bei Zugangskontrolllisten gibt es zwei Hauptbefehle, die Sie sich merken müssen: setfacl und getfacl.

In diesem Kapitel werden wir uns den Befehl setfacl ansehen, da der Befehl getfacl ziemlich selbsterklärend ist.

Der Befehl setfacl wird unter Linux verwendet, um Zugriffskontrolllisten für eine Datei oder ein Verzeichnis zu erstellen, zu ändern und zu entfernen.

Der Befehl setfacl hat die folgende Syntax

$ setfacl {-m, -x} {u, g}:<name>: <file, directory>

wobei geschweifte Klammern eine der folgenden Optionen und normale Klammern ein oder mehrere Elemente bedeuten.

  • -m : bedeutet, dass Sie einen oder mehrere ACL-Einträge in einer Datei oder einem Verzeichnis ändern wollen.
  • -x : bedeutet, dass Sie einen oder mehrere ACL-Einträge in einer Datei oder einem Verzeichnis entfernen wollen.
  • {u, g} : wenn Sie die ACL für einen Benutzer oder für eine Gruppe ändern wollen.
  • name : dies ist ein optionaler Parameter, er kann weggelassen werden, wenn Sie die ACL-Einträge für jeden Benutzer oder für jede Gruppe auf Ihrem Host setzen wollen.
  • : um Lese-, Schreib- oder Ausführungsrechte für die Datei oder das Verzeichnis zu setzen.

Um zum Beispiel bestimmte Schreibrechte für einen Benutzer auf eine Datei zu setzen, würden Sie den folgenden Befehl schreiben

$ setfacl -m u:user:w <file, directory>

Um Ausführungsrechte für alle Benutzer auf Ihrem Host zu setzen, würden Sie den folgenden Befehl schreiben

$ setfacl -m u::x <file, directory>

Um volle Berechtigungen für eine bestimmte Gruppe auf Ihrem Host zu setzen, würden Sie den Befehl setfacl folgendermaßen schreiben

$ setfacl -m g:group:rwx <file, directory>

Angenommen, Sie möchten einen ACL-Eintrag aus einer Datei entfernen.

Um einen benutzerspezifischen Eintrag aus einer Datei zu entfernen, würden Sie die Option x angeben.

Hinweis: Sie können keine spezifischen Rechte von einem einzelnen ACL-Eintrag entfernen, was bedeutet, dass Sie keine Schreibrechte entfernen können, während die ACL-Leseberechtigungen aktiv bleiben.

$ setfacl -x u:<user> <file, directory>

Um eine ACL zu entfernen, die sich auf Gruppen auf Ihrem Rechner bezieht, würden Sie den folgenden Befehl schreiben

$ setfacl -x g:<group> <file, directory>

Nachdem Sie nun gesehen haben, wie einfach Sie unter Linux Zugriffskontrolllisten erstellen können, ist es an der Zeit zu sehen, wie Sie bestehende Zugriffskontrolllisten für Dateien und Verzeichnisse überprüfen können.

Auflistung von Zugriffskontrolllisten mit getfacl

Der Befehl getfacl wird unter Linux verwendet, um eine vollständige Auflistung aller regulären Berechtigungen und Zugriffskontrolllisten-Berechtigungen für eine Datei oder ein Verzeichnis zu drucken.

Das getfacl kann mit der folgenden Syntax verwendet werden

$ getfacl <file, directory>

Der getfacl-Befehl ist in mehrere Kategorien unterteilt:

  • Dateiname, Eigentümer und Gruppe : Die Informationen über die Eigentümerschaft von Benutzern und Gruppen werden oben angezeigt;
  • Benutzerberechtigungen: zuerst werden die regulären Benutzerberechtigungen angezeigt, die auch als Eigentümer bezeichnet werden, gefolgt von allen benutzerspezifischen ACL-Einträgen (benannte Benutzer genannt)
  • Gruppenberechtigungen : Eigene Gruppen werden angezeigt, gefolgt von gruppenspezifischen ACL-Einträgen, die auch als benannte Gruppen bezeichnet werden
  • Maske: schränkt die den ACL-Einträgen zugewiesenen Berechtigungen ein; die Maske wird im nächsten Abschnitt detailliert beschrieben;
  • Andere Berechtigungen: diese Berechtigungen sind immer aktiv und dies ist die letzte Kategorie, die untersucht wird, wenn keine anderen Berechtigungen auf den aktuellen Benutzer oder die Gruppe zutreffen.

Arbeiten mit der Maske der Zugriffskontrolllisten

Wie Sie wahrscheinlich im letzten Screenshot gesehen haben, gibt es einen Maskeneintrag zwischen den benannten Gruppen und den anderen Berechtigungen.

Aber wofür wird diese Maske verwendet?

Die ACL-Maske unterscheidet sich von der Dateierstellungsmaske (umask) und wird verwendet, um bestehende ACL-Einträge für eine Datei oder ein Verzeichnis einzuschränken.

Die ACL-Maske wird als maximaler Satz von ACL-Berechtigungen verwendet, unabhängig von bestehenden Berechtigungen, die die ACL-Maske überschreiten.

Wie immer sagt ein Diagramm mehr als hundert Worte.

Die ACL-Maske wird jedes Mal aktualisiert, wenn Sie einen setfacl-Befehl ausführen, es sei denn, Sie geben mit dem Flag -n an, dass Sie die Maske nicht aktualisieren wollen.

Um zu verhindern, dass die Maske aktualisiert wird, führen Sie setfacl mit folgendem Befehl aus

$ setfacl -n -m u:antoine:rwx <file, directory>

Wie Sie in diesem Beispiel sehen können, habe ich dem Benutzer „antoine“ volle Berechtigungen für die Datei erteilt.

Die Maske ist so eingestellt, dass die Rechte auf Lese- und Schreibrechte beschränkt sind.

Als Folge davon sind die „effektiven Rechte“, die für diesen Benutzer auf diese Datei gesetzt sind, Lese- und Schreibrechte, das Ausführungsrecht wird nicht gewährt.

Hinweis: Wenn Ihr maximaler Satz von Berechtigungen vom Maskeneintrag abweicht, wird Ihnen eine effektive Zeile angezeigt, die den „echten“ Satz der verwendeten ACL-Einträge berechnet.

Erstellen von Zugriffskontrolllistenvorgaben für Verzeichnisse

Wie bereits in diesem Artikel erwähnt, ist es möglich, ACL-Einträge für Verzeichnisse zu erstellen, die auf die gleiche Weise wie Dateizugriffskontrolllisten funktionieren.

Es gibt jedoch einen kleinen Unterschied, wenn es um Verzeichnisse geht: Sie haben die Möglichkeit, Zugriffskontrolllistenvorgaben zu erstellen.

Zugriffskontrolllistenvorgaben werden verwendet, um ACL-Einträge für ein Verzeichnis zu erstellen, die an Objekte in diesem Verzeichnis wie Dateien oder Unterverzeichnisse vererbt werden.

Beim Erstellen von Standard-ACL-Einträgen :

  • Dateien, die in diesem Verzeichnis erstellt werden, erben die ACL-Einträge, die im übergeordneten Verzeichnis angegeben sind
  • Unterverzeichnisse, die in diesem Verzeichnis erstellt werden, erben die ACL-Einträge sowie die Standard-ACL-Einträge aus dem übergeordneten Verzeichnis.

Um Standard-ACL-Einträge zu erstellen, geben Sie die Option -d an, wenn Sie ACL mit dem Befehl setfacl festlegen.

$ setfacl -d -m {u, g}:<name>: <directory>

Um beispielsweise allen in einem Verzeichnis erstellten Dateien Leserechte zuzuweisen, führen Sie den folgenden Befehl aus

$ setfacl -d -m u::r directory

Wenn nun eine Datei in diesem acl-Verzeichnis erstellt wird, können Sie sehen, dass Standard-ACL-Einträge auf die Datei angewendet werden.

Auch wenn ein Verzeichnis im acl-Verzeichnis erstellt wird, erbt es die Standard-ACL-Einträge, die im übergeordneten Verzeichnis angegeben sind.

Bitte beachten Sie, dass es empfohlen wird, Standardberechtigungen für alle drei Kategorien (Benutzer, Gruppe und andere) anzugeben.

Wenn Sie einen der drei Einträge angeben, werden die verbleibenden zwei mit den Berechtigungen der Dateierstellungsmaske erstellt.

Löschen von Standard-Zugriffskontrolllisten für Verzeichnisse

Um bestehende Standard-Zugriffskontrolllisten für Verzeichnisse zu löschen, verwenden Sie das Flag -k mit dem Befehl setfacl.

$ setfacl -k <directory>

Anhand des oben genannten Beispiels wird im Folgenden beschrieben, wie Standardeinträge gelöscht werden

$ setfacl -k acl-directory

Beachten Sie, dass das Löschen von ACL-Einträgen aus dem übergeordneten Verzeichnis keine ACL-Einträge in Dateien oder Verzeichnissen löscht, die im übergeordneten Verzeichnis enthalten sind.

Um Standard-ACL-Einträge in einem Verzeichnis und allen Unterverzeichnissen zu entfernen, müssten Sie eine rekursive Option (-R)

$ setfacl -kR <directory>

Abschluss

In diesem Tutorium haben Sie etwas über Zugriffskontrolllisten unter Linux, den Befehl getfacl und den Befehl setfacl gelernt.

Sie haben mehr über die Maske der Zugriffskontrolllisten gelernt und wie Standard-ACLs verwendet werden, um ACL-Einträge für Dateien und Unterverzeichnisse im übergeordneten Verzeichnis zu erstellen.

Wenn Sie neugierig auf die Linux-Systemadministration sind, haben wir viele weitere Tutorials zu diesem Thema, lesen Sie sie unbedingt!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.