Verzeichnis- und Dateiberechtigungen mit chmod rekursiv verwalten

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“.

Listing the owner and group of a set of files and directories

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 oder 4): 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 oder 2): 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 oder 1): 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.

Listing file and directory permissions

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.
Demonstrating the combined permissions for a file or directory

Ä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.

Checking the current permission of index.js.

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.

Changing index.js’ permissions.

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.

Verifying index.js permissions

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).
Changing permissions for main.py.

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

Verifying permissions for main.py

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.

Checking README.md current permissions

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.

Changing README.md permissions

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

Checking README.md new permissions

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.

Checking my_dir files new permissions

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.

Checking my_dir files new permissions to confirm every part now has every permission

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.

Recursively changing permissions with the numeric method

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.

Checking the permissions set once again, this time with the numeric method

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.

Checking index.js new permissions

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.

Checking index.php new permissions

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).

Checking my_dir new permissions

Ä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.

Checking my_dir new and special permissions

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?

Source:
https://adamtheautomator.com/chmod-recursive/