Sind Sie es leid, Datei- und Verzeichnisberechtigungen manuell ändern zu müssen? Suchen Sie nach einer schnelleren und effizienteren Möglichkeit, Ihre Dateien und Verzeichnisse zu ändern? Wenn ja, dann sind Sie hier genau richtig, denn in diesem Artikel erfahren Sie, wie Sie mit dem Befehl chmod
rekursiv Datei- und Verzeichnisberechtigungen ändern können!
Lesen Sie weiter, um mehr zu erfahren!
Voraussetzungen
Um mitzumachen, benötigen Sie ein Linux-Gerät und ein Verzeichnis, dessen Dateien und Unterverzeichnisse Berechtigungen haben, mit denen Sie üben können.
Wissenswertes über Linux-Benutzer und -Gruppen
Besitzer und Gruppen sind in Linux wichtig und notwendig, um Dateien und Verzeichnisse sicher zu verwalten. Der Besitzer ist standardmäßig derjenige, dem eine Datei oder ein Verzeichnis zugewiesen ist, nämlich der Ersteller. In Linux gehören Dateien und Verzeichnisse auch zu Gruppen. Benutzer und Gruppen werden beide mit dem Befehl chown
festgelegt.
Im untenstehenden Screenshot zeigt der grün markierte Inhalt den Benutzer, dem die Datei oder das Verzeichnis gehört, in diesem Beispiel „mihail“. Der blau markierte Inhalt zeigt an, welcher Gruppe die Datei oder das Verzeichnis gehört, in diesem Beispiel der Gruppe „staff“.

Verständnis der Datei- und Verzeichnisberechtigungen in Linux
Berechtigungen legen fest, welche Aktionen ein Benutzer oder eine Gruppe für eine bestimmte Datei oder Verzeichnis ausführen darf. Sie werden durch eine Zeichenrepräsentation angezeigt und erhalten auch einen numerischen Wert.
- Lesen (
r
oder4
): Gibt an, ob ein Benutzer oder eine Gruppe den Inhalt der Datei oder des Verzeichnisses lesen darf. Die Leseberechtigung wird standardmäßig für alle neu erstellten Dateien und Verzeichnisse für alle Parteien gewährt. - Schreiben (
w
oder2
): Gibt an, ob ein Benutzer oder eine Gruppe den Inhalt eines Objekts bearbeiten kann. Diese Berechtigung wird standardmäßig nur dem Eigentümer einer Datei oder eines Verzeichnisses gewährt. - Ausführen (
x
oder1
): Gibt an, ob ein Benutzer oder eine Gruppe eine Datei ausführen oder Befehle in einem Verzeichnis ausführen kann. Die Ausführungsberechtigung wird standardmäßig nur Verzeichnissen, aber nicht Dateien, gewährt.
Wenn Sie dem Benutzer (
u
) keine Ausführungsberechtigungen für ein Verzeichnis geben, kann er den Inhalt nicht auflisten, da der Benutzer keine Befehle im Verzeichnis ausführen kann!
Ein Beispiel ist unten dargestellt, die Ausgabe des Befehls ls -l
zeigt die verschiedenen Arten von Berechtigungen. Berechtigungen, die dem Wert d
vorausgehen, zeigen ein Verzeichnis an.

Warum gibt es dann scheinbar drei Berechtigungssätze für jedes Objekt? Eine granulare Steuerung der Berechtigungen wird erreicht, indem die Berechtigungen in die unten aufgeführten Abschnitte (im Tutorial als Parteien bezeichnet) unterteilt werden.
- Benutzer (
u
): Der Eigentümer einer Datei oder eines Verzeichnisses, hervorgehoben in Blau. - Gruppe (
g
): Mitglieder der Gruppe, zu der eine Datei oder ein Verzeichnis gehört, hervorgehoben in Grün. - Sonstige (
o
): Alle zusätzlichen Benutzer und Gruppen, die nicht explizit zugewiesen wurden, hervorgehoben in Rot.

Ändern von Dateiberechtigungen mit dem rekursiven chmod-Befehl
Mit dem richtigen Verständnis für Linux-Berechtigungen können Sie lernen, wie man Dateiberechtigungen ändert. Berechtigungen werden mit dem chmod
-Befehl in der rekursiven Variante geändert, wie in den folgenden Beispielen gezeigt wird.
1. Überprüfen Sie zunächst die aktuellen Berechtigungen mit dem Befehl ls -l
. Hier wird die Datei my_dir/index.js angezeigt.

2. Führen Sie den chmod
-Befehl aus, wobei Sie die Partei, a
(alle), und die Berechtigungen, rwx
oder lesen/schreiben/ausführen, angeben. Der vollständige Befehl lautet: chmod a=rwx index.js
.

3. Wie Sie sehen können, liefert die Ausführung von chmod
in der rekursiven Variante keine Ausgabe. Um zu überprüfen, ob sich die Berechtigungen geändert haben, führen Sie den Befehl ls -l
erneut aus.

Dateiberechtigungen mittels numerischer Werte festlegen
Erinnern Sie sich an die Zahlen, die den Berechtigungen wie Lesen oder Schreiben zugeordnet sind? Anstatt die Zeichenwerte anzugeben, können Sie spezifische Berechtigungen auch über eine Zahl festlegen. Durch das Hinzufügen der Werte erstellen Sie eine spezifische Berechtigung wie z.B. 6
, was eine Kombination aus Schreib- (2
) und Leseberechtigungen (4
) ist.
Im folgenden Beispiel legen Sie Berechtigungen für die Datei main.py mit dem Befehl chmod 664 main.py
fest. Die numerischen Werte gliedern sich wie folgt auf.
- Benutzer: Lesen und Schreiben (
6
). - Gruppe: Lesen und Schreiben (
6
). - Andere: Lesen (
4
).

Nachdem die Berechtigungen geändert wurden, überprüfen Sie die neuen Berechtigungen für die Datei main.py mit dem Befehl ls -l
.

Entfernen und Hinzufügen von Dateiberechtigungen
Die bisher ausgeführten nicht-numerischen Befehle verwendeten den Zuweisungsparameter (=
) mit chmod
rekursiv, um explizite Berechtigungen festzulegen. Stattdessen können Sie Berechtigungen zu vorhandenen Berechtigungssätzen entfernen (-
) oder hinzufügen (+
).
1. Listen Sie zunächst die vorhandenen Berechtigungen für die Datei README.md mit dem Befehl ls -l README.md
auf.

2. Fügen Sie dann (+
) Ausführungsrechte (x
) für die Benutzerpartei (u
) hinzu, während Sie Leserechte (r
) von der anderen Partei (o
) für README.md entfernen, mit dem folgenden Befehl chmod u+x,o-r README.md
. Unterschiedliche Parteiberechtigungen werden durch Kommas (,
) getrennt.

3. Führen Sie den Befehl ls -l README.md
aus, um zu überprüfen, ob die Berechtigungen geändert wurden.

Rekursives Ändern von Datei- und Verzeichnisberechtigungen
Obwohl Sie Fortschritte machen, arbeiten Sie nur an einer Datei gleichzeitig. Was ist, wenn Sie eine große Anzahl von Dateien haben, für die Berechtigungen geändert werden müssen? Zeit, Ihr Spiel zu verbessern und zu lernen, Berechtigungen für mehrere Dateien zu ändern.
Eine der Optionen zum Ändern mehrerer Dateien besteht darin, chmod
rekursiv mit der Option -R
(rekursiv, nicht in Großbuchstaben) auszuführen. Die rekursive Option ändert die Berechtigungen für alle Dateien, einschließlich derer in Unterverzeichnissen, innerhalb eines bestimmten Pfads.
1. Betrachten Sie den folgenden Befehl: chmod -R a=r,u=rwx mein_verzeichnis
. Die meisten Optionen haben Sie bereits zuvor gesehen.
Dieser Befehl ändert die Berechtigungen für alle Dateien im Verzeichnis, mein_verzeichnis und Unterverzeichnisse über die rekursive Option (-R
). Die Dateien sind für alle (a
) lesbar, wobei die Berechtigungen für den aktuellen Benutzer (u
) auf volle Berechtigungen (lesen, schreiben, ausführen) gesetzt sind.
Im unten stehenden Screenshot sehen Sie die resultierenden Berechtigungen nach Ausführung des Befehls, der keine Ausgabe erzeugt.

2. Angenommen, Sie führen den Befehl chmod -R a=rwx mein_verzeichnis
im gleichen Verzeichnis wie zuvor, mein_verzeichnis. Erneut ändern Sie alle Dateien in mein_verzeichnis und seinen Unterverzeichnissen, um allen (a
) volle Berechtigungen (lesen, schreiben, ausführen) zu geben. Hier ist das Ergebnis des Befehls, da chmod
rekursiv keine Ausgabe anzeigt.

3. Wie wäre es mit der numerischen Methode? Wie unten gezeigt, funktioniert die rekursive Methode auch mit numerischen Berechtigungen, chmod -R 770 mein_verzeichnis
. Hier geben Sie dem Benutzer und der Gruppe volle Berechtigungen, aber keine Berechtigungen für die andere Partei.

4. Führen Sie ls -l
aus, um zu überprüfen, dass die Berechtigungen für Dateien und Unterverzeichnisse von mein_verzeichnis mit der numerischen Methode festgelegt sind.

Definieren des Verhaltens von Dateien und Ordnern über spezielle Berechtigungen
Spezielle Berechtigungen ermöglichen mehrere zusätzliche Privilegien, die sich von den Standardberechtigungssätzen unterscheiden. Es gibt drei spezielle Berechtigungen. Hier ist, wie diese speziellen Berechtigungen funktionieren und wie Sie sie zu einer Datei oder einem Verzeichnis hinzufügen können.
Festlegen der SUID (Benutzer + S) Berechtigungen
Allgemein als SUID bezeichnet, handelt es sich um eine spezielle Berechtigung für den Benutzer. Die SUID hat eine einzige Funktion: Eine Datei mit SUID führt immer als der Benutzer aus, dem die Datei gehört, unabhängig davon, wer die Datei ausführt.
Zum Beispiel, nehmen Sie index.js. Um die zusätzliche SUID Berechtigung zu geben, führen Sie chmod u+s index.js
aus.
Jetzt, wenn Sie ls -l index.js
ausführen, finden Sie, dass der Benutzer ein s anstelle von x in seinen Berechtigungen hat.

Festlegen der SGID (Gruppe + S) Berechtigungen
Allgemein als SGID bezeichnet, hat diese spezielle Berechtigung zwei Funktionen:
- Wenn sie für eine Datei festgelegt ist, ermöglicht sie es der Datei, als die Gruppe ausgeführt zu werden, die die Datei besitzt, unabhängig davon, wer die Datei ausführt.
- Wenn es für ein Verzeichnis festgelegt ist, werden alle in diesem Verzeichnis erstellten Dateien ihre Gruppenzugehörigkeit auf die des Verzeichniseigentümers setzen.
Üben Sie dies an der Datei index.php. Um der Datei SGID-Berechtigungen hinzuzufügen, führen Sie den folgenden Befehl aus: chmod g+s index.php
.
Wenn Sie jetzt ls -l index.php
ausführen, finden Sie in den Berechtigungen der Gruppe ein s.

Wechseln Sie zu einem Verzeichnis: my_dir. Sie können diesem Verzeichnis die SGID-Berechtigung mit dem folgenden Befehl hinzufügen: chmod g+s my_dir
. Alle in diesem Verzeichnis erstellten Dateien haben nun ihre Gruppenzugehörigkeit auf den Verzeichniseigentümer gesetzt. Sie können die neuen Berechtigungen des Verzeichnisses mit ls -ld my_dir
überprüfen (der Parameter d
beschränkt die Ausgabe nur auf Verzeichnisse).

Ändern der Berechtigung für das Sticky Bit
Die letzte spezielle Berechtigung wird auch als „Sticky Bit“ bezeichnet. Diese Berechtigung betrifft einzelne Dateien nicht. Auf Verzeichnisebene beschränkt es jedoch das Löschen von Dateien. Nur der Besitzer einer Datei kann eine Datei in diesem Verzeichnis entfernen.
Fügen Sie das Sticky Bit zum bekannten Verzeichnis my_dir hinzu. Führen Sie dazu den folgenden Befehl aus: chmod +t my_dir
.
Beachten Sie, dass Sie beim Hinzufügen des Sticky Bits nicht die andere Gruppe(o) vor dem
+t
angeben.
Wenn Sie die neuen Berechtigungen von my_dir überprüfen, sehen Sie ein großes T in den anderen Berechtigungen, wie im Screenshot unten gezeigt.

Abschluss
Herzlichen Glückwunsch! Sie haben viele Themen zum rekursiven chmod
behandelt. Sie sind nun bereit, jedes lästige Berechtigungsproblem mit dem allmächtigen chmod
-Werkzeug zu bewältigen. Sie haben sogar gelernt, wie Sie die Kraft der rekursiven (-R
) Option nutzen können.
Wie beabsichtigen Sie, die vielseitige Funktionalität von chmod
das nächste Mal, wenn Sie Datei- oder Verzeichnisberechtigungen verwalten müssen, zu Ihrem Vorteil einzusetzen?