Dieser Artikel beschreibt, wie Sie Berechtigungen auf einem Linux®-Cloud-Server mithilfe von chmod
ändern Befehl.
Was ist der chmod-Befehl?
Einfach gesagt chmod
steht für Änderungsmodus und wird verwendet, um Datei- oder Verzeichnisberechtigungen in Linux festzulegen. Root-Benutzer verwenden chmod
um festzulegen, welche Benutzer, Gruppen und andere auf Dateien oder Verzeichnisse zugreifen können.
Normalerweise verwenden Sie den chmod
Befehl in den folgenden Formaten:
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
Die Verwendung von Optionen mit dem chmod
Befehl ist optional. Das zweite Beispiel wird am häufigsten verwendet. Ohne vorhandene Option chmod
ändert die Berechtigungen der im Befehl angegebenen Datei oder des Verzeichnisses.
Berechtigungen
In einem Linux-System können Sie Berechtigungen verwenden, um sich auf den Besitzer der Datei oder des Verzeichnisses (Benutzer), die Gruppe, die die Datei oder das Verzeichnis besitzt (Gruppe), oder alle anderen Personen zu beziehen, die auf die Datei oder das Verzeichnis zugreifen (Andere).
Geben Sie diese Berechtigungen an, indem Sie die folgende Notation verwenden:
- alphanumerische Zeichen (r, w, x)
- Oktalzahlen (0-7)
Sie haben beispielsweise eine Datei namens example.txt , und Sie möchten die folgenden Berechtigungen festlegen:
- Der Benutzer kann die Datei lesen, schreiben und ausführen.
- Die Gruppenmitglieder können die Datei lesen und ausführen, aber nicht schreiben.
- Alle anderen können die Datei nur lesen.
Die folgende Befehlsoption legt Ihre gewünschten Berechtigungen für example.txt fest :
$ chmod u=rwx,g=rx,o=r example.txt
Diese Option verwendet alphanumerische Zeichen, um Benutzer anzugeben, die auf die Datei zugreifen können, sowie die Berechtigungen, die Sie für diese designierten Benutzer festlegen möchten.
- Der Buchstabe „u“ =Benutzer
- Der Buchstabe „g“ =Gruppe
- Der Buchstabe „o“ =andere
- Der Buchstabe ‚r‘ =lesen
- Der Buchstabe ‚w‘ =schreiben
- Der Buchstabe „x“ =ausführen
Das folgende Beispiel zeigt, wie Linux die im vorherigen Beispiel gewährten Berechtigungen darstellt:
-rwxr-xr--
Die ersten drei Buchstaben (rwx) sind die Berechtigungen des Benutzers. Die zweiten drei (r-x) stellen die Berechtigungen der Gruppe dar, und die letzten drei (r–) stellen die Berechtigungen der anderen dar.
Als nächstes haben wir die oktale Option für unsere example.txt Übung:
$ chmod 754 example.txt
In diesem Beispiel stehen die Zahlen 7, 5 und 4 jeweils für die Benutzer-, Gruppen- und andere Berechtigungen. Die erste Nummernposition bestimmt die Berechtigung des Benutzers, die zweite Nummer bestimmt die Berechtigungen der Gruppe und die dritte Nummer weist die Berechtigungen für andere zu.
Diese Zahlen sind nicht zufällig ausgewählt. Die Addition der Zahlen 4, 2, 1 und 0 bestimmt die Berechtigungen. Die Nummern haben folgende Belegung:
- 4 steht für „lesen“
- 2 steht für „schreiben“
- 1 steht für „Ausführen“
- 0 steht für „keine“
Daher wird in unserem vorherigen Beispiel die 7 aus der Kombination von Lesen (4), Schreiben (2) und Ausführen (1) bestimmt:4 + 2 + 1 =7. Die 5 ergibt sich aus der Addition von Lesen (4), none (0) und execute (1):4 + 0 + 1 =5. Schließlich ist die 4 eine Kombination aus read (4), none (0) und none (0):4 + 0 + 0 =4 .
Optionen
Normalerweise müssen Sie keine Optionen im chmod
verwenden Befehl, aber falls doch, können Sie die folgenden Optionen mit chmod
verwenden :
-c
,--changes
:Gibt eine ausführliche Ausgabe für vorgenommene Änderungen aus-f
,--silent
,--quiet
:Schaltet die meisten Fehlermeldungen aus-v
,--verbose
:Gibt zu jeder verarbeiteten Aktion eine ausführliche Meldung aus--no-preserve-root
:Ignoriert die Referenzierung, die normalerweise standardmäßig dem / (root)-Verzeichnis gegeben wird--preserve-root
:Arbeitet nicht rekursiv im Verzeichnis / (Root)--reference=RFILE
:Legt die Berechtigungen so fest, dass sie denen von RFILE entsprechen, wobei ein bestimmter MODE ignoriert wird-R
,--recursive
:Änderungen an Dateien oder Verzeichnissen werden rekursiv angewendet--help
:Zeigt die Hilfemeldung an und beendet sich dann--version
:Zeigt Versionsinformationen an und beendet sich dann
Extras
Zusätzlich zu den bereits besprochenen Berechtigungen ist der chmod
Befehl kann drei weitere spezielle Berechtigungen in Linux setzen.
- SUID (Benutzer-ID festlegen)
- SGID (Gruppen-ID festlegen)
- Sticky-Bit
SUID
Ein s
im rwx
des Benutzers Berechtigungssatz, der das x
ersetzt , stellt diese Berechtigung dar, wie im folgenden Beispiel gezeigt:
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
Die ersten drei Buchstaben in rwsr-xr-x
stellen die Berechtigungen des Benutzers dar. Beachten Sie, dass anstelle eines x
es gibt ein s
in den drei Berechtigungsslots des Benutzers. Statt x
anzuzeigen für execute gibt es ein s
an der Ausführungsstelle. Warum ist das so?
Hinweis: Die 4 vor dem üblichen Oktal-Berechtigungssatz repräsentiert diese Berechtigung. Also statt 755
, wird die Berechtigung als 4755
geschrieben .
Sie sollten diese Option mit Vorsicht verwenden, da diese spezielle Berechtigung es einem Benutzer ermöglicht, ein Binärprogramm auszuführen, als ob er der Besitzer dieses Programms wäre, obwohl er es nicht ist. Das bekannteste Beispiel dafür ist passwd
Befehl.
Im Fall von passwd
, kann der Benutzer das Programm ausführen, obwohl das Binärprogramm root gehört. Da jedoch passwd
standardmäßig als SUID gesetzt ist, wird es immer als Root-Benutzer ausgeführt.
Wenn ein normaler Benutzer SUID-Berechtigungen für andere Binärprogramme hat, könnte er Befehle als root ausführen, ohne root
zu haben Berechtigungen. Es ermöglicht eine abnormale Eskalation von Berechtigungen, die normalerweise sudo
erfordern Zugriffsrechte.
SUID-Berechtigungen können eine in das Linux-Betriebssystem integrierte Vorsichtsmaßnahme nur in Form von Binärdateien bewirken. Es wirkt sich nicht auf Skripte aus.
SGID
Ein s
im rwx
der Gruppe Berechtigungssatz, der das x
ersetzt in t r-x
Segment stellt die SGID-Berechtigung dar, wie im folgenden Beispiel gezeigt:
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
Dieser s
befindet sich in der zweiten Gruppe von drei Berechtigungen, von denen wir entdeckt haben, dass sie die Berechtigungen der Gruppe sind, wenn sie zuvor in alphanumerischem Stil geschrieben wurden. In der oktalen Darstellung ein 2
vor den anderen drei oktalen Berechtigungszahlen bezeichnet diese Berechtigung. Statt 755
, schreiben Sie dies als 2755
.
Wie SUID funktionieren SGID-Berechtigungen nur für Binärdateien. Sie arbeiten nicht mit Skripten. Was SGID angeht, erlaubt es unprivilegierten Gruppenmitgliedern, eine Binärdatei auszuführen, als ob sie der Root-Benutzer wären.
In der Regel können Sie diese Berechtigung für Verzeichnisse verwenden, auf die Mitglieder der Gruppe Zugriff auf das von der Gruppe freigegebene Verzeichnis haben müssen. Alle in diesem Verzeichnis erstellten Dateien haben denselben Gruppeneigentümer, unabhängig davon, welches Gruppenmitglied die Datei erstellt hat.
Sticky-Bit
Ein t
im rwx
der anderen Berechtigungssatz, der das x
ersetzt , stellt diese Berechtigung dar, wie im folgenden Beispiel gezeigt:
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
Beachten Sie das t
in der letzten Gruppe von drei Buchstaben. Das oktale Äquivalent von t
ist eine 1
vor den drei Erlaubnisoktalen. Statt 777
, schreiben Sie dies als 1777
.
Was macht dieses klebrige Bit? Normalerweise verwenden Sie diese Berechtigung auf einem tmp Verzeichnis, und seine Funktion besteht darin, Benutzer daran zu hindern, Dateien zu löschen, die anderen Benutzern gehören. Wenn eine Gruppe Schreibzugriff auf ein Verzeichnis hat, kann normalerweise jeder Benutzer innerhalb dieser Gruppe jede Datei in diesem Verzeichnis löschen. Die Sticky-Bit-Erlaubnis stoppt das. Nur der Ersteller der Datei kann sie löschen.
Als bewährte Methode sollten Sie die Sticky-Bit-Berechtigung für alle Verzeichnisse festlegen, deren andere Berechtigung oktal 7 ist (Lesen, Schreiben, Ausführen). In unserem 754
Beispielsweise möchten Sie die Sticky-Bit-Berechtigung verwenden, wenn die Oktale 757
sind wobei 7 das dritte Oktal ist (das die Erlaubnis der anderen darstellt).
Berechtigungs-Spickzettel für Dateien und Verzeichnisse
Es folgt ein kurzer Spickzettel, der jeden Teil der Beispielausgabe erklärt:
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
:Der-
am Anfang sagt Ihnen, dass dies eine Datei ist. Eind
am Anfang gibt ein Verzeichnis an.rwx
:Die ersten drei Buchstaben stellen die Berechtigungen des Dateieigentümers dar und bedeuten, dass der Eigentümer die Datei example.txt lesen, schreiben und ausführen kann.rw-
:Die zweiten drei Buchstaben stellen die Berechtigungen der Gruppe dar und bedeuten, dass die Gruppenmitglieder die Datei lesen und in sie schreiben können, aber sie können sie nicht ausführen.r--
:Die dritten drei Buchstaben stellen die Berechtigungen der anderen dar und bedeuten, dass jeder, der nicht der Besitzer oder die Gruppe ist, die die Datei besitzt, die Datei nur lesen kann. Sie können nicht in die Datei schreiben oder die Datei ausführen.rack
:Der Eigentümer der Datei.space
:Der Gruppeneigentümer.123G
:Die Größe der Datei in Gigabyte. EinM
würde Megabyte bezeichnen, und einK
würde Kilobyte bedeuten.Feb 03 15:36
:Dies bezeichnet das Datum und die Uhrzeit der letzten Änderung der Datei.example.txt
:Der Name der Datei. Wenn Sie dies als „/example“ angeben, ist dies der Name des Verzeichnisses.