So verwenden Sie Dateisystem-ACLs (Zugriffskontrolllisten) unter Linux

0
8

Wichtige Erkenntnisse

  • Um alle ACL-Einträge für eine Datei anzuzeigen, verwenden Sie den Befehl 'getfacl filename', ersetzen Sie 'filename' jedoch durch den Namen Ihrer Datei.
  • Um einen neuen ACL-Eintrag für eine Datei festzulegen, verwenden Sie den Befehl 'setfacl -m u:username:rwx filename'
  • Um einen Standard-ACL-Eintrag für ein Verzeichnis festzulegen, verwenden Sie den Befehl 'setfacl -d -m u:username:rwx dirname'

Sind Sie für einen gemeinsam genutzten Dateiserver für mehrere Personengruppen verantwortlich, die alle unterschiedlichen Zugriff benötigen? In diesem Tutorial gehen wir auf die Grundlagen von ACLs ein und wenden sie in einem fiktiven Büroszenario an.

Was sind ACLs?

Zugriffskontrolllisten (ACLs) ergänzen das standardmäßige Dateisystem-Berechtigungsmodell unter Linux und Unix. Kurz gesagt: Sie ermöglichen es Ihnen, über den Bereich „Benutzer/Gruppe/Andere“ hinauszugehen. Konzept zur Erstellung zusätzlicher Berechtigungssätze für Dateien und Verzeichnisse. Sie erledigen auch nette Dinge wie das automatische Anwenden von Berechtigungen auf neue Dateien und Verzeichnisse. Aber lassen Sie uns zunächst einige grundlegende Linux-Dateisystem-Berechtigungskonzepte behandeln, bei denen ACLs zusammenarbeiten.

Standard-Dateisystemberechtigungen

Um die Dateisystemberechtigungen unter Linux zu verstehen, müssen Sie zunächst wissen, dass Linux ein „Mehrbenutzer-Betriebssystem“ ist. Das bedeutet, dass es mehrere Benutzerkonten gibt, die es grundsätzlich mehr als einer Person ermöglichen, sich am System anzumelden, wobei jede Person ihre eigenen Freiheiten und Einschränkungen hat.

Einige Benutzerkonten sind "Systemkonten". Konten; nicht solche, die von einer Person verwendet werden, sondern beispielsweise von einer Software. Prozesse werden unter diesen speziellen Konten ausgeführt, um sie wie ein normales Benutzerkonto auf verschiedene Teile des Betriebssystems zuzulassen und zu beschränken.

Da wir nun die Benutzer verstehen, kann ich Ihnen „Gruppen“ vorstellen. Gruppen sind ziemlich einfach zu verstehen – es handelt sich lediglich um Sammlungen vorhandener Benutzer. Um vielen Benutzern gleichzeitig Berechtigungen für eine Ressource zu erteilen, können Sie eine neue Gruppe erstellen und bestimmten Benutzern die Mitgliedschaft in dieser Gruppe gewähren. Anschließend weisen Sie der Gruppe und nicht jedem einzelnen Benutzer die Berechtigung für die Ressource zu. Dadurch wird die Verwaltung einfacher und effizienter.

OK, sprechen wir über Dateien und Verzeichnisse. Dies sind die Ressourcen, bei denen es uns wichtig ist, den Zugriff zu gewähren und zu schützen.

Die meisten Linux-Dateisysteme (z. B. EXT4, XFS und ZFS) ermöglichen Ihnen, drei primäre Berechtigungen auf Dateien und Verzeichnisse anzuwenden. Diese Berechtigungen sind:

  • Lesen: Erlaubt das Lesen einer Datei (oder das Auflisten von Inhalten in einem Verzeichnis)
  • Schreiben: Erlauben, dass eine Datei in eine Datei geschrieben oder geändert wird (oder Dateien und Unterverzeichnisse innerhalb eines Verzeichnisses erstellen)
  • Ausführen: Erlauben, ein Programm oder Skript auszuführen (oder in ein Verzeichnis einzutreten, z. B Beispiel mit dem Befehl cd)

Alle Dateien und Verzeichnisse in einem Dateisystem verfügen über Standardberechtigungen, die drei verschiedenen Einheiten zugewiesen sind: dem Benutzer, dem sie gehören, dem Gruppeneigentümer und allen anderen Benutzern. Jeder Entität kann eine Kombination aus Lese-, Schreib- und Ausführungsberechtigungen (r/w/x) zugewiesen werden. Sie können den Befehl ls verwenden, um alle diese Informationen anzuzeigen:

ls -l mysupersecretfile.txt

  1. [U]ser (Eigentümer)-Berechtigungen
  2. [G]group Berechtigungen
  3. Alle [Anderen]Benutzer' Berechtigungen
  4. Benutzername des Eigentümers
  5. Name der Eigentümergruppe

Standardmäßig wird jeder neu erstellte Benutzer auch einer neuen primären Gruppe mit demselben Namen zugewiesen. Im obigen Beispiel ist #4 der Benutzername „user“; und #5 ist der Gruppenname „Benutzer“. Denken Sie daran, wenn Sie sich eine Ausgabe wie diese ansehen, da sie zunächst verwirrend sein kann.

Die Dateien und Verzeichnisse, die Benutzer ändern dürfen, hängen von einigen Dingen ab, unter anderem davon, ob der Benutzer Dateien „besitzt“. es oder wenn sie anderweitig über eine Gruppenmitgliedschaft über die entsprechenden Berechtigungen verfügen. Beachten Sie, dass der Root-Benutzer jede Datei im System ändern kann, unabhängig vom Eigentümer.

Dieser Ansatz für Dateisystemberechtigungen funktioniert gut für die meisten Heim- und Standalone-Setups. Wenn Sie mit Systemen arbeiten, in denen mehrere Benutzer auf dieselbe Dateihierarchie zugreifen, und Sie bestimmten Personen Zugriff auf bestimmte Bereiche gewähren (und diese für andere einschränken) müssen, beginnen Sie natürlich, den Standard zu verstehen „1 Eigentümer, 1 Gruppe“ Die Methodik greift etwas zu kurz.

Wie ACLs das Standardberechtigungsmodell verbessern

Zugriffskontrolllisten bieten die Möglichkeit, Berechtigungseinträge für Dateien und Verzeichnisse auf mehrere Benutzer und Gruppen anzuwenden. Ein Beispiel dafür, dass ACLs eine gute Option sind, ist, wenn Sie einer Datei eine bestimmte Benutzerberechtigung zuweisen möchten, der bereits bestimmte Eigentümer- und Gruppeneigentümerberechtigungen zugewiesen sind.

ACLs für Verzeichnisse folgen dem Standardberechtigungsmodell r/w/x, indem sie Ihnen die Möglichkeit geben, ( r )lesen (Inhalt auflisten, aber nicht eingeben) das Verzeichnis, ( schreiben )neue Dateien und Verzeichnisse innerhalb des Verzeichnisses und e( x )Führen Sie das Verzeichnis aus (geben Sie es ein).

Wie wäre es mit einem Beispiel? Angenommen, Sie haben eine Datei namens report.pdf, die einem Benutzer namens Peter mit Lese- und Schreibberechtigung gehört. Sie haben der Gruppe „Accounting“ zusätzlich die Gruppeneigentümerschaft für diese Datei gewährt. Jetzt haben Sie eine Anfrage erhalten, dem Benutzer namens Lumberg Lesezugriff zu gewähren.

Nehmen wir an, Sie verwenden das Standardberechtigungsmodell. Hier sind ein paar (vergebliche) Ideen, wie Sie diese Anfrage abschließen können:

  • Sie können Lumberg keine Mitgliedschaft in der Buchhaltungsgruppe gewähren (das würde ihm Zugriff auf alle möglichen anderen Dateien verschaffen, die er nicht einsehen sollte).
  • Sie möchten aus Gründen der ordnungsgemäßen Verwaltungspraxis auch keine ganz neue Gruppe mit Benutzern aus der Buchhaltungsgruppe plus Lumberg erstellen, nur für diese Datei.
  • Aus offensichtlichen Sicherheitsgründen möchten Sie insbesondere nicht allen anderen Benutzern Berechtigungen gewähren.

ls -l report.pdf

Was tun? Nun, Sie könnten einfach eine frühe Mittagspause machen. Lassen Sie uns jedoch stattdessen ACLs verwenden!

Überprüfung auf ACL-Unterstützung auf Ihrem System

Die meisten modernen Linux-Distributionen unterstützen ACLs standardmäßig. Die meisten gängigen Dateisysteme unterstützen sie, ihre Standard-Mount-Optionen umfassen ACL-Unterstützung und Standardinstallationen sollten die richtigen Pakete enthalten.

Zur Überprüfung auf ext2/3/4-Dateisystemen verwenden Sie tune2fs. Wenn Sie beispielsweise /dev/sda1 überprüfen möchten (das ein ext4-Dateisystem enthält):

sudo tune2fs -l /dev/sda1 | grep "Standard-Mount-Optionen"

Als Referenz finden Sie hier eine von IBM verfasste Liste verschiedener Dateisystemunterstützungen für ACLs, gruppiert nach Plattform.

Der getfacl-Befehl

Der getfacl-Befehl zeigt Dateizugriffskontrolllisten für Dateien und Verzeichnisse an (ruft diese ab). Wenn Sie getfacl für unsere Berichtsdatei von oben ausführen, sehen Sie:

getfacl report.pdf

Im Moment zeigt die Ausgabe die minimale ACL der Datei. Die minimale ACL umfasst die Standardberechtigungen für den Eigentümer, die Eigentümergruppe und alle anderen Benutzer.

Wenn es einen erweiterten ACL-Eintrag für einen anderen Benutzer gäbe, nennen wir ihn Michael, würden wir Folgendes sehen:

getfacl report.pdf

Zusätzlich zu den Mindest-ACLs haben wir jetzt ein erweiterter ACL-Eintrag für Benutzer michael (Lese- und Schreibberechtigungen). Wenn Sie die Datei erneut mit erweiterten ACLs auflisten, sehen Sie ein Pluszeichen (+) rechts neben dem Feld „Andere Benutzer“. Berechtigungen, die darauf hinweisen, dass erweiterte ACL-Einträge vorhanden sind:

ls -l report.pdf

Der setfacl-Befehl

Der setfacl-Befehl ist das, was eigentlich ACLs für Dateien und Verzeichnisse festlegt. Es fügt Benutzer- und Gruppeneinträge hinzu und entfernt sie, ändert Berechtigungen und erledigt andere Aufgaben wie das Festlegen von Standard-ACLs für Verzeichnisse und das Arbeiten mit Masken. Wir werden es verwenden, um die obige Anfrage zu vervollständigen, indem wir dem Lumberg-Benutzer Lesezugriff auf report.pdf gewähren.

Um den neuen Benutzer-ACL-Eintrag hinzuzufügen, verwenden Sie setfacl mit dieser Syntax (die ich unten aufschlüssele):

sudo setfacl -m u:lumberg:r report.pdf

  • -m bedeutet, dass wir einen ACL-Eintrag für die Datei ändern.
  • u: bedeutet, dass es sich um einen Benutzer handelt, den wir #39;re hinzufügen, gefolgt von einem Doppelpunkt (:) als Trennzeichen (ein g: fügt eine Gruppe hinzu und o:).fügt alle anderen Benutzer hinzu. Berechtigungen)
  • lumberg: ist der Benutzername, den wir hinzufügen, gefolgt von einem weiteren Doppelpunkt als Trennzeichen.
  • r bedeutet, dass wir& Wir fügen dem Eintrag (nur) Leseberechtigungen hinzu.
  • report.pdf ist der Name der Datei, zu der wir den ACL-Eintrag hinzufügen

Nachdem dies nun festgelegt ist, können wir mit getfacl noch einmal einen Blick darauf werfen:

getfacl report.pdf

Erkennen Sie unseren neuen Eintrag?

Standard-ACLs

Standard-ACLs gelten nur für Verzeichnisse (Ordner). Wenn Sie eine Standard-ACL für ein Verzeichnis festlegen, wird der von Ihnen angegebene Eintrag automatisch auf jede neue Datei und jedes neue Verzeichnis darin angewendet, unabhängig davon, wer sie erstellt. Es handelt sich um eine Art allumfassenden, rekursiven Ansatz, der ihn bei der Planung Ihrer Dateisystemhierarchie sehr nützlich macht.

Stellen wir sicher, dass Lumberg neue Dateien lesen und neue Verzeichnisse eingeben kann, die unter Buchhaltung erstellt werden. Wir verwenden die Option -d zum Hinzufügen einer Standard-ACL:

sudo setfacl -d -m u:lumberg:rX Accounting

Ein großes X wendet die Ausführungsberechtigung nur auf new an Unterverzeichnisse; keine Dateien.

Zugriffskontrolllisten eignen sich hervorragend, wenn Sie Ihre Dateisystemberechtigungen auf die nächste Stufe heben möchten. Mit standardmäßigen Benutzer-/Gruppen-/anderen Berechtigungen können Sie viel erreichen, aber es wird wahrscheinlich einen Punkt auf Ihrer Reise geben, an dem die Verwendung von ACLs viel sinnvoller ist.