Verwendung des Befehls chmod unter Linux

Steuern Sie mit dem Linux- chmodBefehl, wer auf Dateien zugreifen, Verzeichnisse durchsuchen und Skripts ausführen kann . Dieser Befehl ändert Linux-Dateiberechtigungen, die auf den ersten Blick kompliziert aussehen, aber tatsächlich ziemlich einfach sind, sobald Sie wissen, wie sie funktionieren.

chmod Ändert Dateiberechtigungen

Unter Linux wird über Berechtigungen gesteuert, wer was mit einer Datei oder einem Verzeichnis tun kann. Es gibt drei Berechtigungssätze. Ein Satz für den Eigentümer der Datei, ein anderer Satz für die Mitglieder der Dateigruppe und ein endgültiger Satz für alle anderen.

Die Berechtigungen steuern die Aktionen, die für die Datei oder das Verzeichnis ausgeführt werden können. Sie erlauben oder verhindern, dass eine Datei gelesen, geändert oder, wenn es sich um ein Skript oder Programm handelt, ausgeführt wird. Für ein Verzeichnis bestimmen die Berechtigungen, wer cdin das Verzeichnis darf und wer Dateien im Verzeichnis erstellen oder ändern kann.

Mit dem  chmod Befehl legen Sie jede dieser Berechtigungen fest. Um zu sehen, welche Berechtigungen für eine Datei oder ein Verzeichnis festgelegt wurden, können wir verwenden ls.

Anzeigen und Verstehen von Dateiberechtigungen

Wir können die -lOption (Langformat) verwenden, um lsdie Dateiberechtigungen für Dateien und Verzeichnisse aufzulisten.

ls -l

In jeder Zeile gibt das erste Zeichen den Typ des Eintrags an, der aufgelistet wird. Wenn es ein Bindestrich ( -) ist, ist es eine Datei. Wenn es der Buchstabe ist d , ist es ein Verzeichnis.

Die nächsten neun Zeichen repräsentieren die Einstellungen für die drei Berechtigungssätze.

  • Die ersten drei Zeichen zeigen die Berechtigungen für den Benutzer an, dem die Datei gehört ( Benutzerberechtigungen ).
  • Die mittleren drei Zeichen zeigen die Berechtigungen für Mitglieder der Dateigruppe ( Gruppenberechtigungen ).
  • Die letzten drei Zeichen zeigen die Berechtigungen für alle Personen an, die nicht zu den ersten beiden Kategorien gehören ( andere Berechtigungen ).

Jeder Berechtigungssatz enthält drei Zeichen. Die Zeichen sind Indikatoren für das Vorhandensein oder Fehlen einer der Berechtigungen. Sie sind entweder ein Bindestrich ( -) oder ein Buchstabe. Wenn das Zeichen ein Bindestrich ist, bedeutet dies, dass keine Berechtigung erteilt wird. Wenn das Zeichen eine ist r, woder eine x, hat die Genehmigung erteilt worden ist .

Die Buchstaben stehen für:

  • r : Leseberechtigungen. Die Datei kann geöffnet und ihr Inhalt angezeigt werden.
  • w : Schreibberechtigungen. Die Datei kann bearbeitet, geändert und gelöscht werden.
  • x : Berechtigungen ausführen. Wenn die Datei ein Skript oder ein Programm ist, kann sie ausgeführt werden.

Zum Beispiel:

  •  --- bedeutet, dass überhaupt keine Berechtigungen erteilt wurden.
  •  rwxbedeutet, dass vollständige Berechtigungen erteilt wurden. Die Lese-, Schreib- und Ausführungsindikatoren sind alle vorhanden.

In unserem Screenshot beginnt die erste Zeile mit einem d. Diese Zeile bezieht sich auf ein Verzeichnis namens "Archiv". Der Eigentümer des Verzeichnisses ist "dave", und der Name der Gruppe, zu der das Verzeichnis gehört, wird auch "dave" genannt.

Die nächsten drei Zeichen sind die Benutzerberechtigungen für dieses Verzeichnis. Diese zeigen, dass der Eigentümer über die vollständigen Berechtigungen verfügt. Die r, wund xZeichen sind alle vorhanden. Dies bedeutet, dass der Benutzer Dave über Lese-, Schreib- und Ausführungsberechtigungen für dieses Verzeichnis verfügt.

Der zweite Satz von drei Zeichen sind die Gruppenberechtigungen r-x. Diese zeigen, dass die Mitglieder der Dave-Gruppe Lese- und Ausführungsberechtigungen für dieses Verzeichnis haben. Das heißt, sie können die Dateien und ihren Inhalt im Verzeichnis cdauflisten und in diesem Verzeichnis ausführen. Sie haben keine Schreibberechtigungen und können daher keine Dateien erstellen, bearbeiten oder löschen.

Der letzte Satz von drei Zeichen ist auch  r-x. Diese Berechtigungen gelten für Personen, die nicht den ersten beiden Berechtigungssätzen unterliegen. Diese Personen ("andere" genannt) haben Lese- und Ausführungsberechtigungen für dieses Verzeichnis.

Zusammenfassend haben Gruppenmitglieder und andere Berechtigungen gelesen und ausgeführt. Der Eigentümer, ein Benutzer namens Dave, verfügt ebenfalls über Schreibberechtigungen.

Für alle anderen Dateien (außer der Skriptdatei mh.sh) haben Dave und Mitglieder der Dave-Gruppe Lese- und Schreibeigenschaften für die Dateien, und die anderen haben nur Leseberechtigungen.

Für den Sonderfall der Skriptdatei mh.sh haben der Eigentümer Dave und die Gruppenmitglieder Lese-, Schreib- und Ausführungsberechtigungen, und die anderen haben nur Lese- und Ausführungsberechtigungen.

Grundlegendes zur Berechtigungssyntax

Um chmod Berechtigungen festzulegen, müssen wir Folgendes mitteilen:

  • Wer: Für  wen setzen wir Berechtigungen?
  • Was : Welche Änderung nehmen wir vor? Fügen wir die Berechtigung hinzu oder entfernen wir sie?
  • Welche : Welche der Berechtigungen setzen wir?

Wir verwenden Indikatoren, um diese Werte darzustellen, und bilden kurze "Berechtigungsanweisungen", z. B. u+x"u" bedeutet "Benutzer" (wer), "+" bedeutet "hinzufügen" (was) und "x" bedeutet die Ausführungsberechtigung (welche) .

Die „Wer“ -Werte, die wir verwenden können, sind:

  • u : Benutzer, dh der Eigentümer der Datei.
  • g : Gruppe, dh Mitglieder der Gruppe, zu der die Datei gehört.
  • o : Andere, dh Personen, die nicht von den uund gBerechtigungen regiert werden .
  • a : Alle, dh alle oben genannten.

Wenn keines davon verwendet wird, chmodverhält es sich so, als ob " a" verwendet worden wäre.

Die "Was" -Werte, die wir verwenden können, sind:

  • - : Minuszeichen. Entfernt die Berechtigung.
  • + : Pluszeichen. Erteilt die Erlaubnis. Die Berechtigung wird zu den vorhandenen Berechtigungen hinzugefügt. Wenn Sie diese Berechtigung und nur diesen Berechtigungssatz haben möchten, verwenden Sie die =unten beschriebene Option.
  • = : Gleichheitszeichen. Legen Sie eine Berechtigung fest und entfernen Sie andere.

Die "welche" Werte, die wir verwenden können, sind:

  • r : Die Leseberechtigung.
  • w : Die Schreibberechtigung.
  • x : Die Ausführungsberechtigung.

Festlegen und Ändern von Berechtigungen

Nehmen wir an, wir haben eine Datei, für die jeder die vollen Berechtigungen hat.

ls -l new_ file.txt

Wir möchten, dass der Benutzer Dave Lese- und Schreibberechtigungen hat und die Gruppe und andere Benutzer nur Leseberechtigungen haben. Wir können den folgenden Befehl verwenden:

chmod u = rw, og = r new_file.txt

Wenn Sie den Operator "=" verwenden, werden alle vorhandenen Berechtigungen gelöscht und die angegebenen festgelegt.

Lassen Sie uns die neue Berechtigung für diese Datei überprüfen:

ls -l new_file.txt

Die vorhandenen Berechtigungen wurden entfernt und die neuen Berechtigungen wurden wie erwartet festgelegt.

Wie wäre es mit dem Hinzufügen einer Berechtigung, ohne die vorhandenen Berechtigungseinstellungen zu entfernen? Das können wir auch leicht machen.

Angenommen, wir haben eine Skriptdatei, deren Bearbeitung wir abgeschlossen haben. Wir müssen es für alle Benutzer ausführbar machen. Die aktuellen Berechtigungen sehen folgendermaßen aus:

ls -l new_script.sh

Mit dem folgenden Befehl können wir die Ausführungsberechtigung für alle hinzufügen:

chmod a + x new_script.sh

Wenn wir uns die Berechtigungen ansehen, werden wir feststellen, dass die Ausführungsberechtigung jetzt allen gewährt wird und die vorhandenen Berechtigungen noch vorhanden sind.

ls -l new_script.sh

Ohne das „a“ in der Aussage „a + x“ hätten wir dasselbe erreichen können. Der folgende Befehl hätte genauso gut funktioniert.

chmod + x new_script.sh

Festlegen von Berechtigungen für mehrere Dateien

Wir können Berechtigungen auf mehrere Dateien gleichzeitig anwenden.

Dies sind die Dateien im aktuellen Verzeichnis:

ls -l

Angenommen, wir möchten die Schreibberechtigungen für die "anderen" Benutzer aus Dateien mit der Erweiterung ".page" entfernen. Wir können dies mit dem folgenden Befehl tun:

chmod oder * .page

Lassen Sie uns überprüfen, welchen Effekt dies hatte:

ls -l

Wie wir sehen können, wurde die Leseberechtigung aus den ".page" -Dateien für die "andere" Benutzerkategorie entfernt. Es sind keine anderen Dateien betroffen.

Wenn wir Dateien in Unterverzeichnisse aufnehmen wollten, hätten wir die -ROption (rekursiv) verwenden können.

chmod -R oder * .page

Numerische Kurzschrift

Eine andere Möglichkeit chmodbesteht darin, die Berechtigungen, die Sie dem Eigentümer, der Gruppe und anderen Personen erteilen möchten, als dreistellige Nummer anzugeben. Die Ziffer ganz links repräsentiert die Berechtigungen für den Eigentümer. Die mittlere Ziffer repräsentiert die Berechtigungen für die Gruppenmitglieder. Die Ziffer ganz rechts repräsentiert die Berechtigungen für die anderen.

Die Ziffern, die Sie verwenden können und was sie darstellen, sind hier aufgelistet:

  • 0: (000) Keine Erlaubnis.
  • 1: (001) Berechtigung ausführen.
  • 2: (010) Schreibberechtigung.
  • 3: (011) Schreib- und Ausführungsberechtigungen.
  • 4: (100) Leseberechtigung.
  • 5: (101) Berechtigungen lesen und ausführen.
  • 6: (110) Lese- und Schreibberechtigungen.
  • 7: (111) Lese-, Schreib- und Ausführungsberechtigungen.

Jede der drei Berechtigungen wird durch eines der Bits im binären Äquivalent der Dezimalzahl dargestellt. Also 5, was binär 101 ist, bedeutet Lesen und Ausführen. 2, was 010 in binär ist, würde die Schreibberechtigung bedeuten.

Mit dieser Methode legen Sie die gewünschten Berechtigungen fest. Sie fügen diese Berechtigungen nicht zu den vorhandenen Berechtigungen hinzu. Wenn also bereits Lese- und Schreibberechtigungen vorhanden wären, müssten Sie 7 (111) verwenden, um Ausführungsberechtigungen hinzuzufügen. Die Verwendung von 1 (001) würde die Lese- und Schreibberechtigungen entfernen und die Ausführungsberechtigung hinzufügen.

Fügen wir die Leseberechtigung wieder in die ".page" -Dateien für die andere Benutzerkategorie ein. Wir müssen auch die Benutzer- und Gruppenberechtigungen festlegen, also müssen wir sie auf das einstellen, was sie bereits sind. Diese Benutzer haben bereits Lese- und Schreibberechtigungen (6 (110)). Wir möchten, dass die „anderen“ Lese- und Berechtigungen haben, daher müssen sie auf 4 (100) gesetzt werden.

Der folgende Befehl führt dies aus:

chmod 664 * .page

Dadurch werden die Berechtigungen, die wir für den Benutzer, die Gruppenmitglieder und andere benötigen, auf die von uns benötigten festgelegt. Die Berechtigungen der Benutzer und Gruppenmitglieder werden auf das zurückgesetzt, was sie bereits waren, und die anderen haben die Leseberechtigung wiederhergestellt.

ls -l

Erweiterte Optionen

Wenn Sie die Manpage lesen, werden chmodSie sehen, dass es einige erweiterte Optionen gibt, die sich auf die SETUID- und SETGID-Bits sowie auf das eingeschränkte Löschen oder "Sticky" -Bit beziehen.

In 99% der Fälle, die Sie benötigen chmod, werden Sie mit den hier beschriebenen Optionen abgedeckt.