Dieses Tutorial beschreibt Zugriffskontrolllisten unter Linux, wofür sie verwendet werden und wie sie verwaltet werden.
Als Systemadministrator verbringen Sie wahrscheinlich einige Zeit damit, Berechtigungen für Benutzer und Gruppen auf Ihrem System zu konfigurieren.
Dateiberechtigungen sind bereits recht praktisch, um Verzeichnissen oder Dateien Lese-, Schreib- oder Ausführungsberechtigungen zu erteilen.
Aber was ist, wenn wir eine präzisere Möglichkeit benötigen, Ordnern oder Dateien Berechtigungen zu erteilen?
Was ist, wenn ich einem bestimmten Benutzer oder einer bestimmten Gruppe Zugriff auf eine Datei gewähren möchte, die nicht der aktuelle Eigentümer der Datei ist?
Genau das sind Zugriffskontrolllisten, auch kurz ACL genannt , lösen auf einem Linux-System.
Im heutigen Tutorial werfen wir einen sehr genauen Blick auf Zugriffskontrolllisten, was sie sind und wie sie verwendet werden, um ein Linux-System richtig zu konfigurieren.
Bereit?
Was Sie lernen werden
Wenn Sie diesem Tutorial bis zum Ende folgen, lernen Sie die folgenden Themen kennen:
- Welche Zugriffskontrolllisten sind und wie sie aus dem ls-Befehl ausgelesen werden können;
- So legen Sie grundlegende Berechtigungen für eine Datei mit setfacl fest Befehl:
- Lesen von Zugriffskontrolllisten mit getfacl Befehl;
- Was ist dieAccess Control List-Maske und wie es gelesen werden sollte;
- Welche Standardwerte für Zugriffssteuerungslisten sind und wie sie effektiv eingesetzt werden können
Das ist ein ziemlich langes Programm, also beginnen wir ohne weiteres mit einer kurzen Definition dessen, was Zugriffskontrolllisten sind.
Grundlagen von Zugriffskontrolllisten unter Linux
Unter Linux gibt es zwei Möglichkeiten, Berechtigungen für Benutzer und Gruppen festzulegen:mit regulären Dateiberechtigungen oder mit Zugriffskontrolllisten.
Definition der Zugriffskontrollliste
Zugriffskontrolllisten werden auf Linux-Dateisystemen verwendet, um benutzerdefinierte und persönlichere Berechtigungen für Dateien und Ordner festzulegen. ACLs ermöglichen Dateieigentümern oder privilegierten Benutzern, bestimmten Benutzern oder bestimmten Gruppen Rechte zu erteilen.
Wie Sie wahrscheinlich wissen, sind die Berechtigungen unter Linux in drei Kategorien unterteilt:eine für den Besitzer der Datei, eine für die Gruppe und eine für die anderen.
In einigen Fällen möchten Sie jedoch möglicherweise einem bestimmten Benutzer Zugriff auf ein Verzeichnis gewähren (z. B. die Ausführungsberechtigung), ohne diesen Benutzer in die Gruppe der Datei aufnehmen zu müssen.
Genau aus diesem Grund wurden Zugriffskontrolllisten überhaupt erfunden.
Zugriffskontrollliste auflisten
Unter Linux werden Zugriffskontrolllisten nicht aktiviert, wenn Sie eine neue Datei oder ein neues Verzeichnis auf Ihrem Host 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 zeigen, ist hier der Unterschied beim Auflisten von Dateien in einer minimalen Instanz.
Nachdem Sie nun einige Grundlagen zu Zugriffssteuerungslisten kennen, sehen wir uns an, wie Sie mit der Erstellung einfacher ACLs für Ihre Dateien und Verzeichnisse beginnen können.
Zugriffskontrolllisten unter Linux erstellen
Bevor Sie mit ACL-Befehlen beginnen, ist es wichtig, dass die Pakete auf Ihrem Host installiert sind.
Installation der ACL-Pakete prüfen
Dies ist möglicherweise nicht der Fall, wenn Sie sich dafür entschieden haben, einen minimalen Server auszuführen.
Sehen Sie sich zunächst die Hilfe zu setfacl an indem Sie den folgenden Befehl ausführen
$ setfacl --help
Wenn Ihr Host den Befehl setfacl nicht finden kann, stellen Sie sicher, dass die erforderlichen Pakete für die ACL-Verwaltung installiert sind
$ sudo apt-get install acl -y
Beachten Sie, dass Sie sudo-Berechtigungen auf Debian 10 benötigen, um diesen Befehl auszuführen.
Führen Sie den Befehl setfacl aus und vergewissern Sie sich, dass Sie dieses Mal die Hilfebefehle sehen können.
Nachdem Ihr Host nun richtig konfiguriert ist, sehen wir uns an, wie der Befehl setfacl funktioniert.
Zugriffskontrolllisten mit setfacl setzen
Bei Zugriffskontrolllisten gibt es zwei Hauptbefehle, die Sie sich merken müssen:setfacl und getfacl.
In diesem Kapitel werfen wir einen Blick auf setfacl Der Befehl getfacl ist ziemlich selbsterklärend.
Der Befehl setfacl wird unter Linux verwendet, um Zugriffskontrolllisten für eine Datei oder ein Verzeichnis zu erstellen, zu ändern und zu entfernen.
Das setfacl hat die folgende Syntax
$ setfacl {-m, -x} {u, g}:<name>:[r, w, x] <file, directory>
Wobei geschweifte Klammern eine der folgenden Optionen und reguläre Klammern einen oder mehrere Punkte bedeuten.
- -m :bedeutet, dass Sie ändern möchten ein oder mehrere ACL-Einträge in der Datei oder im Verzeichnis.
- -x :bedeutet, dass Sie entfernen möchten ein oder mehrere ACL-Einträge in einer Datei oder einem Verzeichnis.
- {u, g} :Wenn Sie die ACL für einen Benutzer oder für eine Gruppe ändern möchten.
- 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 festlegen möchten.
- [r, w, x] :um Lese-, Schreib- oder Ausführungsberechtigungen für die Datei oder das Verzeichnis zu setzen.
Um beispielsweise einem Benutzer bestimmte Schreibrechte für eine Datei zuzuweisen, würden Sie den folgenden Befehl schreiben
$ setfacl -m u:user:w <file, directory>
Um Ausführungsberechtigungen für alle Benutzer auf Ihrem Host festzulegen, würden Sie den folgenden Befehl schreiben
$ setfacl -m u::x <file, directory>
Um vollständige Berechtigungen für eine bestimmte Gruppe auf Ihrem Host festzulegen, schreiben Sie setfacl auf diese Weise
$ setfacl -m g:group:rwx <file, directory>
Nehmen wir nun an, Sie möchten einen ACL-Eintrag aus einer Datei entfernen.
Um einen benutzerspezifischen Eintrag aus einer Datei zu entfernen, geben Sie die Option x an.
Hinweis:Sie können keine Rechte von einem einzelnen ACL-Eintrag festlegen, was bedeutet, dass Sie keine Schreibberechtigungen entfernen können, während die ACL-Leseberechtigungen aktiv bleiben.
$ setfacl -x u:<user> <file, directory>
Um die ACL zu entfernen, die sich auf Gruppen auf Ihrem Host bezieht, würden Sie den folgenden Befehl schreiben
$ setfacl -x g:<group> <file, directory>
Nachdem Sie nun gesehen haben, wie Sie auf einfache Weise Zugriffskontrolllisten unter Linux erstellen können, ist es an der Zeit, sich anzusehen, wie Sie vorhandene Zugriffskontrolllisten für Dateien und Verzeichnisse überprüfen können.
Zugriffskontrolllisten mit getfacl auflisten
Der getfacl-Befehl wird unter Linux verwendet, um eine vollständige Liste 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 Befehl getfacl ist in mehrere Kategorien unterteilt:
- Dateiname, Besitzer und Gruppe :Die Informationen über Benutzer- und Gruppenbesitz werden oben angezeigt;
- Benutzerberechtigungen:Zuerst würden Sie die regulären Benutzerberechtigungen finden, die auch als Eigentümerbenutzer bezeichnet werden, gefolgt von benutzerspezifischen ACL-Einträgen (namentlich benannte Benutzer genannt)
- Gruppenberechtigungen :Eigentümergruppen werden angezeigt, gefolgt von gruppenspezifischen ACL-Einträgen, auch benannte Gruppen genannt
- Maske :das schränkt die Berechtigungen für ACL-Einträge 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 mit dem aktuellen Benutzer oder der aktuellen Gruppe übereinstimmen.
Arbeiten mit der Maske Access Control Lists
Wie Sie wahrscheinlich auf dem letzten Screenshot gesehen haben, gibt es einen Maskeneintrag zwischen 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 vorhandene ACL-Einträge einzuschränken, die in einer Datei oder einem Verzeichnis vorhanden sind.
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 an, dass Sie die Maske nicht mit dem Flag -n aktualisieren möchten.
Um zu verhindern, dass die Maske aktualisiert wird, führen Sie setfacl mit dem folgenden Befehl aus
$ setfacl -n -m u:antoine:rwx <file, directory>
Wie Sie in diesem Beispiel sehen können, habe ich den Benutzer „antoine“ so eingestellt, dass er volle Berechtigungen für die Datei hat.
Die Maske ist so eingestellt, dass die Berechtigungen auf Lese- und Schreibberechtigungen beschränkt werden.
Folglich sind die für diese Datei für diesen Benutzer festgelegten „effektiven Berechtigungen“ Lese- und Schreibberechtigungen, die Ausführungsberechtigung wird nicht erteilt.
Hinweis:Wenn Ihr maximaler Satz an Berechtigungen vom Maskeneintrag abweicht, wird Ihnen eine effektive Zeile angezeigt, die den „echten“ Satz verwendeter ACL-Einträge berechnet.
Zugriffskontrolllisten-Standardwerte für Verzeichnisse erstellen
Wie bereits in diesem Artikel erwähnt, ist es möglich, ACL-Einträge für Verzeichnisse zu erstellen, und sie funktionieren genauso wie Dateizugriffskontrolllisten.
Es gibt jedoch einen kleinen Unterschied, wenn es um Verzeichnisse geht:Sie müssen die Option auswählen, Standardeinstellungen für Zugriffskontrolllisten zu erstellen.
Standardeinstellungen für Zugriffssteuerungslisten werden verwendet, um ACL-Einträge in einem Verzeichnis zu erstellen, die von Objekten in diesem Verzeichnis wie Dateien oder Unterverzeichnissen geerbt werden.
Beim Erstellen von Standard-ACL-Einträgen:
- In diesem Verzeichnis erstellte Dateien erben die im übergeordneten Verzeichnis angegebenen ACL-Einträge
- In diesem Verzeichnis erstellte Unterverzeichnisse 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 die ACL mit dem Befehl setfacl festlegen.
$ setfacl -d -m {u, g}:<name>:[r, w, x] <directory>
Um beispielsweise allen in einem Verzeichnis erstellten Dateien Leseberechtigungen zuzuweisen, würden Sie den folgenden Befehl ausführen
$ 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.
Wenn ein Verzeichnis im acl-Verzeichnis erstellt wird, wird es auf ähnliche Weise erben im übergeordneten Verzeichnis angegebene Standard-ACL-Einträge.
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 Berechtigungen erstellt, die sich auf die Dateierstellungsmaske beziehen.
Löschen von Standardzugriffskontrolllisten für Verzeichnisse
Um standardmäßig vorhandene Zugriffskontrolllisten auf Verzeichnisse zu löschen, verwenden Sie das -k Flag mit dem setfacl-Befehl.
$ setfacl -k <directory>
In Anbetracht des zuvor angegebenen Beispiels erfahren Sie hier, wie Sie Standardeinträge löschen
$ 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.
Zum Entfernen von Standard-ACL-Einträgen in einem Verzeichnis und allen Unterverzeichnissen , müssten Sie eine rekursive verwenden Option (-R)
$ setfacl -kR <directory>
Schlussfolgerung
In diesem Tutorial haben Sie Zugriffskontrolllisten unter Linux, die Befehle getfacl und setfacl kennengelernt.
Sie haben mehr über die Maske der Zugriffskontrolllisten erfahren und wie Standard-ACLs verwendet werden, um ACL-Einträge für Dateien und Unterverzeichnisse zu erstellen, die im übergeordneten Verzeichnis enthalten sind.
Wenn Sie neugierig auf Linux-Systemadministration sind, haben wir noch viele weitere Tutorials zu diesem Thema, lesen Sie sie unbedingt!