Der Befehl setfacl unter Linux

Der Befehl setfacl unter Linux
„In diesem Tutorial wird erläutert.

Zugriffskontrolllisten (ACL) ermöglichen es uns, Berechtigungen mit zusätzlichen Optionen zu verwalten als die von POSIX -Berechtigungen angebotenen (gemeinsame Berechtigungen, die wir mit dem verwalten, mit dem Chmod Befehl).

Wenn Sie dieses Tutorial lesen, lernen Sie das Wichtigste setfacl Verwandte Optionen.

Dieses Dokument ist für beide Benutzer optimiert, die schnell suchen setfacl Anweisungen zur Implementierung und für Benutzer, die mit ACL nicht vertraut sind und alle erforderlichen theoretischen Inhalte finden, die erforderlich sind, um ihn nach dem praktischen Abschnitt zu verstehen. Ich habe auch eine Tabelle hinzugefügt, in der die zusammengefasst ist setfacl Befehlsoptionen unten beschrieben.

Alle in diesem Artikel enthaltenen Beispiele enthalten Screenshots, sodass es jedem Linux -Benutzer leicht zu verstehen ist.”

Die Befehlsoptionen setfacl

Vor Beginn mit dem setfacl Befehl, überprüfen wir die aktuellen Berechtigungen der benannten Datei . Um die aktuellen ACL -Berechtigungen zu überprüfen, führen Sie die aus getfacl Befehl mit der folgenden Syntax:

getfacl

In meinem Fall führe ich den Befehl aus, der im Screenshot unten angezeigt wird.

GetFacl -Datei1

Wie Sie im obigen Screenshot sehen können, verfügt die Datei für die POSIX -Berechtigungen für den angerufenen Eigentümer LinuxHint (Lesen und Schreiben) für die LinuxHint Gruppe (Lesen) und für andere (Lesen). Der Benutzer und die Gruppe sind LinuxHint.

Dies sind die Berechtigungen, die wir mit dem bewerben Chmod Befehl, mit dem wir Berechtigungen für Eigentümer, Gruppe und andere definieren können.

Nehmen wir nun an, wir möchten benutzerdefinierte Berechtigungen für einen anderen spezifischen Benutzer mit den ACL Extended Berechtigungen hinzufügen.

Im folgenden Beispiel werde ich dem Benutzer Lesen, Schreiben und Ausführungsberechtigungen über dieselbe Datei gewähren LinuxHint2. Dann renne ich getfacl Noch einmal, um die Änderungen zu überprüfen.

setfacl -m u: LinuxHint2: RWX -Datei1

Wo:

  • setfacl: Ruft das Programm zur Verwaltung von Berechtigungen auf.
  • -M: Dieses Flag wird verwendet, um Berechtigungen zu ändern.
  • U: LinuxHint2: RWX: Gibt den Benutzer an LinuxHint2 (U: LinuxHint2) und gewährt ihm die Berechtigungen zum Lesen, Schreiben und Ausführungen (: rwx).
  • Datei1: Die Zieldatei, für die Berechtigungen geändert/angewendet werden.

NOTIZ: Wie Sie im vorherigen Screenshot sehen können, können wir zusätzlich zu den regulären Berechtigungen einen neuen Benutzer sehen (LinuxHint2) mit benutzerdefinierten Berechtigungen wurde hinzugefügt und eine neue Zeile namens a Maske; Dies wird später später erklärt.

Nehmen wir nun jedoch an, wir möchten einer anderen Gruppe Berechtigungen anstelle eines anderen Benutzers erteilen. Die Syntax ist fast gleich, mit Ausnahme der u: Option, die durch ersetzt werden muss G: Wie ich in der folgenden Abbildung gezeigt habe, wo die Gruppe LinuxHint3 Erteilt Lesen und Schreibberechtigungen. Dann renne ich getfacl Modifikationen überprüfen.

setfacl -m g: LinuxHint3: RW -Datei1

Wie Sie sehen können, eine neue Gruppe (LinuxHint3) wurde mit Lesen und Schreibberechtigungen hinzugefügt.

Jetzt erklären wir das Maske Zeile, die erschien, nachdem wir erweiterte ACL -Berechtigungen beantragt haben.

Der Maske Ermöglicht das Überschreiben von Berechtigungen für Benutzer, Gruppen oder andere außer dem Eigentümer. Wenn die Maske ist R, Benutzer, Gruppen und andere (alle außer dem Eigentümer) mit früheren effektiven Schreib- oder Ausführungsberechtigungen werden sie verlieren. Die Maskengrenze betrifft alle Benutzer mit Ausnahme des Eigentümers. Es ist eine Funktion, vorhandene Berechtigungen zu überschreiben, zu begrenzen oder zu erhöhen.

Um die Maske zu ändern, müssen Sie keine Benutzer oder Gruppen angeben. Geben Sie einfach die Maske an, die von Berechtigungen verwendet werden M: Wie im folgenden Beispiel gezeigt.

setfacl -m m: r Datei1

Wie Sie sehen können, nach dem Einstellen einer Maske mit einem Lesegrenze, die LinuxHint2 Benutzer, der zuvor Lesen, Schreiben und Ausführungsberechtigungen und die Gruppe hatte LinuxHint3, Wer Lesen und Schreibberechtigungen hatte, haben jetzt nur noch eine effektive Erlaubnis zu lesen. Die Maske -Lesung hat ihre vorherigen Berechtigungen überschrieben. Nur die Berechtigungen des Besitzers bleiben unberührt.

Wenn die Maske jedoch für die Lesen von Berechtigungen eingestellt ist und Sie einem Benutzer, einer Gruppe oder einem anderen mehr als das Lesen von Berechtigungen gewähren, wird die Maske automatisch geändert, wodurch die Grenze gemäß den neu erteilten Berechtigungen erhöht wird. Standardmäßig kann die Maskengrenze nicht niedriger sein als eine vorhandene Berechtigungen an andere als den Eigentümer (wir werden sehen, wie dies später weiter unten verhindern kann).

Dies bedeutet, wenn die Maske auf eingestellt ist R (Lesen), und ich erteile einem Benutzer zusätzliche Schreib- und Ausführungsberechtigungen (RWX), die Maske wird rwx.

Lassen Sie uns zunächst unser aktuelles Szenario sehen, in dem sich die Maske befindet R- (Nur Leserlaubnis).

Lassen Sie uns nun sehen, was passiert, wenn ich Ausführungs- und Schreiben von Berechtigungen für den Benutzer hinzufüge LinuxHint2, Wer hat derzeit nur effektive Leseberechtigungen (wie alle außer dem Eigentümer).

setfacl -m u: LinuxHint2: RWX -Datei1

Wie Sie sehen können, nicht nur die LinuxHint2 Benutzerberechtigungen wurden aktualisiert, aber auch die Maske. Dies liegt daran.

Sie können spezifische Maskenberechtigungen haben und einem bestimmten Benutzer, einer Gruppe oder anderen zusätzlichen Berechtigungen erhalten, ohne dass die Maske durch die Implementierung des -n -Flags geändert wird.

Der -N Flag weist die ACL an, die Maske unverändert zu halten, auch wenn einige Berechtigungen sie übertreffen.

Lassen Sie uns das neue Szenario sehen, in dem die Maske eingestellt ist R-

Im folgenden Beispiel den Benutzer LinuxHint2 wird Schreib- und Ausführungsberechtigungen erhalten, aber die -N Flag wird implementiert, um zu verhindern, dass die Maske geändert wird.

Wie Sie unten sehen können, die LinuxHint2 Der Benutzer erhielt Schreib- und Ausführungsrechte, aber die Maske bleibt unverändert, wie von der angewiesen -N Flagge.

setfacl -n -m u: LinuxHint2: WX -Datei1

Der -D Flag wird verwendet, um die Standardberechtigungen für den Inhalt eines Verzeichnisses zu definieren. Dieses Flag wirkt sich nicht auf die Verzeichnisberechtigungen aus, sondern nur auf den Inhalt, einschließlich Dateien und Unterverzeichnisse.

Dieses Flag kann beispielsweise nützlich sein, um Standardberechtigungen für einen bestimmten Benutzer oder eine Gruppe über den Inhalt des Verzeichnisses zu erstellen. Wenn in diesem Verzeichnis neue Dateien erstellt werden, erhalten die definierten Benutzer oder Gruppen ihre Standardberechtigungen.

Im aktuellen Szenario gibt es ein Verzeichnis mit den folgenden Berechtigungen.

Im folgenden Beispiel, Andere (Alle Benutzer, die keine Eigentümer oder Gruppen sind) werden als Standard -Lesermeldungen für den Inhalt des genannten Verzeichnisses gegebenVerzeichnis.”

setfacl -d -m O: R -Verzeichnis

Wie Sie im obigen Screenshot sehen können Andere wurden in nur Lesen geändert. Wenn nun neue Dateien und Unterverzeichnisse in der “erstellt werdenVerzeichnis,Andere erhalten standardmäßig Leseberechtigungen.

Der -R Mit Flag können Sie die ACL -Regeln rekursiv anwenden. Wenn -R Implementiert wird die definierten Berechtigungen das angegebene Verzeichnis und alle Dateien und Unterverzeichnisse beeinflussen. Dieses Flag ist in vielen Linux -Befehlen für rekursive Aufgaben vorhanden.

Der folgende Befehl gibt an Andere Lesen und Schreiben von Berechtigungen für Verzeichnis1 rekursiv.

setfacl -r -m o: rw directory1

Mit ACL können Sie die Berechtigungen später wiederherstellen.

Im folgenden Bild wird der Befehl getFaCl verwendet, um eine rekursive Sicherung der “zu erstellenVerzeichnis"Zu einer Datei namens"ACLPERMENS.txt.

GetFacl -r -Verzeichnis> Aclpermissionen.txt

Verwenden Sie die Sicherung, um die Sicherung wiederherzustellen, die -wiederherstellen Option, gefolgt von =

In meinem Fall:

setfacl -restore = aclPermissions.txt

Sie können auch den Befehl setfacl verwenden, um die Berechtigungen von einer Datei in eine andere zu kopieren.

Das aktuelle Szenario für das Dateiinventar ist Folgendes:

Im folgenden Beispiel kopiere ich die Berechtigungen aus Datei1 zu einer Datei namens “Inventar.”

getfacl file1 | setfacl-set-file =-Inventar

Was ist eine ACL (Access Control List)

Ein ACL ist ein System für native Windows -Berechtigungen, um den Zugriff auf Ressourcen wie Dateien, Verzeichnisse, Partitionen usw. zu verwalten. Dieses System basiert auf Objekten, denen die Berechtigungen für Benutzer, Gruppen und andere, einschließlich individuell, definiert sind, wie oben gezeigt.

Die Berechtigungen werden an die definierte Datei-, Verzeichnis- oder Dateisystem beigefügt, die den Zugriff für Eigentümer, Benutzer, Gruppen oder andere definiert.

Unterschied zwischen ACL und POSIX -Erlaubnis

Bei den POSIX -Berechtigungen können Benutzer Berechtigungen für Eigentümer, Gruppe und andere verwalten, und ermöglicht die Verwaltung von benutzerdefinierten Berechtigungen für alle, einschließlich Benutzer und Gruppen, einschließlich Benutzern und Gruppen.

Darüber hinaus implementiert ACL neue Berechtigungsarten, wie die in diesem Tutorial erläuterten Standardberechtigungen.

Dies bringt Flexibilität, die wir mit regelmäßigen POSIX -Berechtigungen nicht genießen können. Wie Sie sehen können, arbeiten beide in Kombination, und ihre Kombination bringt eine starke Berechtigungsstruktur mit sich.

Der Befehl setfaCl wird verwendet, um ACL -Berechtigungen auf Dateien, Verzeichnisse und Dateisysteme festzulegen.
Dies wird verwendet, um Dateien, Verzeichnisse, Benutzer, Gruppen oder andere mit den gewünschten Berechtigungen anzugeben, wenn sie POSIX -Grenzen brechen müssen. Der Ressourcenbesitzer und die Prozesse mit CAP_FOWER haben das Recht, die ACLS -Berechtigungen zu ändern.

Die folgende Tabelle fasst einige ACL -Optionen zusammen

OPTIONEN FUNKTION
-M ACL ändern
-X Entfernen Sie alle ACLremove -ACL
-B Entfernen Sie alle ACL
-k Entfernen Sie die Standardberechtigungen
-R Wendet ACL rekursiv an
-L Folgt symbolische Links
-P Folgt nicht symbolische Links
M: Maske definieren
-wiederherstellen = Stellt ACL aus einer Sicherungsdatei wieder her, die mit erstellt wurde getfacl -R
-prüfen Wendet sich keine Änderungen an, zeigt das Ergebnis jedoch an
-N Beeinflussen Sie die Maske nicht

Sie finden viele weitere Informationen zu ACL und den Befehl setfacl unter https: // linux.sterben.net/mAN/5/acl und https: // linux.sterben.net/mAN/1/setfacl.

Abschluss

Wie Sie sehen können, ermöglicht ACL Benutzern, Berechtigungen gegenüber POSIX -Berechtigungssystemgrenzen anzupassen. Dies ist äußerst nützlich, wenn Ressourcen mit bestimmten Zugriffstypen gemeinsam genutzt werden müssen. Wie Sie sehen können, ist ACL leicht zu verstehen und zu implementieren und kann von jedem Linux -Benutzer unabhängig von ihrer Wissensebene gelernt werden. Die ACL ist eine historische Ausnahme, in der Linux eine Funktion von Windows importiert hat. Sie können zusätzliche Informationen zu ACL auf der Mannseite erhalten.

Vielen Dank, dass Sie dieses Tutorial gelesen haben, um zu erklären, wie Sie den Befehl setfacl unter Linux verwenden. Folgen Sie unserem Blog weiter für professionelle Linux -Inhalte.