GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Chmod-Befehl in Linux (Dateiberechtigungen)

Unter Linux wird der Zugriff auf die Dateien über die Dateiberechtigungen, -attribute und -eigentümer verwaltet. Dadurch wird sichergestellt, dass nur autorisierte Benutzer und Prozesse auf Dateien und Verzeichnisse zugreifen können.

Dieses Tutorial behandelt die Verwendung von chmod Befehl zum Ändern der Zugriffsberechtigungen von Dateien und Verzeichnissen.

Linux-Dateiberechtigungen #

Bevor wir fortfahren, erklären wir das grundlegende Linux-Berechtigungsmodell.

In Linux ist jede Datei einem Eigentümer und einer Gruppe zugeordnet und mit Zugriffsrechten für drei verschiedene Benutzerklassen versehen:

  • Der Eigentümer der Datei.
  • Die Gruppenmitglieder.
  • Andere (alle anderen).

Der Dateibesitz kann mit chown geändert werden und chgrp Befehle.

Es gibt drei Arten von Dateiberechtigungen, die für jede Klasse gelten:

  • Die Leseberechtigung.
  • Die Schreibberechtigung.
  • Die Ausführungsberechtigung.

Mit diesem Konzept können Sie festlegen, welche Benutzer die Datei lesen, in die Datei schreiben oder die Datei ausführen dürfen.

Dateiberechtigungen können mit ls angezeigt werden Befehl:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Das erste Zeichen zeigt den Dateityp an. Es kann eine normale Datei sein (- ), Verzeichnis (d ), ein symbolischer Link (l ) oder einen anderen speziellen Dateityp.

Die nächsten neun Zeichen stellen die Dateiberechtigungen dar, drei Triplets mit jeweils drei Zeichen. Das erste Triplett zeigt die Eigentümerberechtigungen, das zweite die Gruppenberechtigungen und das letzte Triplett zeigt die Berechtigungen aller anderen. Die Berechtigungen können je nach Dateityp unterschiedliche Bedeutung haben.

Im obigen Beispiel (rw-r--r-- ) bedeutet, dass der Eigentümer der Datei Lese- und Schreibrechte hat (rw- ), die Gruppe und andere haben nur Leseberechtigungen (r-- ).

Jedes der drei Berechtigungstriplets kann aus folgenden Zeichen aufgebaut sein und unterschiedliche Wirkungen haben, je nachdem, ob sie auf eine Datei oder auf ein Verzeichnis gesetzt sind:

Auswirkung von Berechtigungen auf Dateien

Berechtigung Charakter Bedeutung in Datei
Lesen - Die Datei ist nicht lesbar. Sie können den Dateiinhalt nicht anzeigen.
r Die Datei ist lesbar.
Schreiben - Die Datei kann nicht geändert oder modifiziert werden.
w Die Datei kann geändert oder modifiziert werden.
Ausführen - Die Datei kann nicht ausgeführt werden.
x Die Datei kann ausgeführt werden.
s Falls im user gefunden triplet setzt die setuid Bit. Wenn in der group gefunden Triplet, es setzt die setgid Bit. Es bedeutet auch, dass x Flag gesetzt ist.
Wenn die setuid oder setgid Flags für eine ausführbare Datei gesetzt werden, wird die Datei mit den Rechten des Besitzers und/oder der Gruppe der Datei ausgeführt.
S Das gleiche wie s aber das x Flag ist nicht gesetzt. Dieses Flag wird selten für Dateien verwendet.
t Falls in den others gefunden Triplet setzt das sticky bit.
Es bedeutet auch, dass x Flagge ist gesetzt. Dieses Flag ist für Dateien nutzlos.
T Dasselbe wie t aber das x Flag ist nicht gesetzt. Dieses Flag ist für Dateien nutzlos.

Auswirkung von Berechtigungen auf Verzeichnisse (Ordner)

Unter Linux sind Verzeichnisse spezielle Dateitypen, die andere Dateien und Verzeichnisse enthalten.

Berechtigung Charakter Bedeutung im Verzeichnis
Lesen - Der Inhalt des Verzeichnisses kann nicht angezeigt werden.
r Der Inhalt des Verzeichnisses kann angezeigt werden.
(Sie können z. B. Dateien innerhalb des Verzeichnisses mit ls auflisten .)
Schreiben - Der Inhalt des Verzeichnisses kann nicht geändert werden.
w Der Inhalt des Verzeichnisses kann geändert werden.
(z. B. Sie können neue Dateien erstellen, Dateien löschen usw.)
Ausführen - Das Verzeichnis kann nicht geändert werden in.
x Das Verzeichnis kann mit cd navigiert werden .
s Falls im user gefunden Triplet, es setzt die setuid Bit. Wenn in der group gefunden Triplet setzt die setgid Bit. Es bedeutet auch, dass x Flagge ist gesetzt. Wenn die setgid Flag auf ein Verzeichnis gesetzt wird, erben die darin erstellten neuen Dateien die Verzeichnisgruppen-ID (GID) anstelle der primären Gruppen-ID des Benutzers, der die Datei erstellt hat.
setuid hat keine Auswirkung auf Verzeichnisse.
S Das gleiche wie s aber das x Flag ist nicht gesetzt. Dieses Flag ist für Verzeichnisse nutzlos.
t Falls in den others gefunden Triplet setzt das sticky bit.
Es bedeutet auch, dass x Flagge ist gesetzt. Wenn das Sticky-Bit für ein Verzeichnis gesetzt ist, kann nur der Eigentümer der Datei, der Eigentümer des Verzeichnisses oder der Administrator die Dateien im Verzeichnis löschen oder umbenennen.
T Dasselbe wie t aber das x Flag ist nicht gesetzt. Dieses Flag ist für Verzeichnisse nutzlos.

Mit chmod #

Der chmod Der Befehl hat die folgende allgemeine Form:

chmod [OPTIONS] MODE FILE...

Der chmod Mit dem Befehl können Sie die Berechtigungen für eine Datei ändern, indem Sie entweder einen symbolischen oder numerischen Modus oder eine Referenzdatei verwenden. Wir werden die Modi später in diesem Artikel genauer erläutern. Der Befehl kann eine oder mehrere durch Leerzeichen getrennte Dateien und/oder Verzeichnisse als Argumente akzeptieren.

Nur root, der Dateieigentümer oder Benutzer mit sudo-Berechtigungen können die Berechtigungen einer Datei ändern. Seien Sie besonders vorsichtig, wenn Sie chmod verwenden , insbesondere wenn die Berechtigungen rekursiv geändert werden.

Symbolische (Text-)Methode #

Die Syntax von chmod Der Befehl hat bei Verwendung des symbolischen Modus das folgende Format:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Der erste Satz von Flags ([ugoa…] ), Benutzer-Flags, definiert, für welche Benutzerklassen die Berechtigungen auf die Datei geändert werden.

  • u - Der Eigentümer der Datei.
  • g - Die Benutzer, die Mitglieder der Gruppe sind.
  • o - Alle anderen Benutzer.
  • a - Alle Benutzer, identisch mit ugo .

Wenn das Benutzer-Flag weggelassen wird, ist das Standard-Flag a und die von umaskar gesetzten Berechtigungen sind nicht betroffen.

Der zweite Satz von Flags ([-+=] ), die Vorgangs-Flags, definiert, ob die Berechtigungen entfernt, hinzugefügt oder gesetzt werden sollen:

  • - Entfernt die angegebenen Berechtigungen.
  • + Fügt angegebene Berechtigungen hinzu.
  • = Ändert die aktuellen Berechtigungen in die angegebenen Berechtigungen. Wenn nach dem = keine Berechtigungen angegeben sind Symbol werden alle Berechtigungen der angegebenen Benutzerklasse entfernt.

Die Berechtigungen (perms... ) kann explizit festgelegt werden, indem entweder null oder einer oder mehrere der folgenden Buchstaben verwendet werden:r , w , x , X , s , und t . Verwenden Sie einen einzelnen Buchstaben aus der Menge u , g , und o beim Kopieren von Berechtigungen von einer in eine andere Benutzerklasse.

Beim Festlegen von Berechtigungen für mehr als eine Benutzerklasse ([,…] ), verwenden Sie Kommas (ohne Leerzeichen), um die symbolischen Modi zu trennen.

Nachfolgend finden Sie einige Beispiele zur Verwendung von chmod Befehl im symbolischen Modus:

  • Geben Sie den Mitgliedern der Gruppe die Erlaubnis, die Datei zu lesen, aber nicht, sie zu schreiben und auszuführen:

    chmod g=r filename
  • Entfernen Sie die Ausführungsberechtigung für alle Benutzer:

    chmod a-x filename
  • Schreibrechte für andere Benutzer rekursiv entfernen:

    chmod -R o-w dirname
  • Entfernen Sie die Lese-, Schreib- und Ausführungsberechtigung für alle Benutzer außer dem Eigentümer der Datei:

    chmod og-rwx filename

    Dasselbe kann auch mit dem folgenden Formular erreicht werden:

    chmod og= filename
  • Geben Sie dem Eigentümer der Datei Lese-, Schreib- und Ausführungsberechtigungen, der Gruppe der Datei Leseberechtigungen und allen anderen Benutzern keine Berechtigungen:

    chmod u=rwx,g=r,o= filename
  • Fügen Sie die Besitzerberechtigungen der Datei zu den Berechtigungen hinzu, die die Mitglieder der Gruppe der Datei haben:

    chmod g+u filename
  • Fügen Sie einem bestimmten Verzeichnis ein Sticky-Bit hinzu:

    chmod o+t dirname

Numerische Methode #

Die Syntax von chmod Der Befehl hat bei Verwendung der numerischen Methode das folgende Format:

chmod [OPTIONS] NUMBER FILE...

Wenn Sie den numerischen Modus verwenden, können Sie die Berechtigungen für alle drei Benutzerklassen (Eigentümer, Gruppe und alle anderen) gleichzeitig festlegen.

Die NUMBER kann eine 3- oder 4-stellige Zahl sein.

Wenn eine dreistellige Zahl verwendet wird, stellt die erste Ziffer die Berechtigungen des Eigentümers der Datei dar, die zweite die Gruppe der Datei und die letzte alle anderen Benutzer.

Jede Schreib-, Lese- und Ausführungsberechtigung hat den folgenden Zahlenwert:

  • r (lesen) =4
  • w (schreiben) =2
  • x (Ausführen) =1
  • keine Berechtigungen =0

Die Berechtigungsnummer einer bestimmten Benutzerklasse wird durch die Summe der Werte der Berechtigungen für diese Gruppe dargestellt.

Um die Berechtigungen der Datei im numerischen Modus herauszufinden, berechnen Sie einfach die Summen für alle Benutzerklassen. Um beispielsweise dem Eigentümer der Datei Lese-, Schreib- und Ausführungsberechtigungen, der Gruppe der Datei Lese- und Ausführungsberechtigungen und allen anderen Benutzern nur Leseberechtigungen zu erteilen, würden Sie Folgendes tun:

  • Eigentümer:rwx=4+2+1=7
  • Gruppe:r-x=4+0+1=5
  • Andere:r-x=4+0+0=4

Mit obiger Methode kommen wir auf die Zahl 754 , das die gewünschten Berechtigungen darstellt.

Um die setuid einzurichten , setgid , und sticky bit Flags verwenden eine vierstellige Zahl.

Bei Verwendung der 4-stelligen Nummer hat die erste Ziffer folgende Bedeutung:

  • setuid=4
  • setgid=2
  • sticky=1
  • keine Änderungen =0

Die nächsten drei Ziffern haben dieselbe Bedeutung wie bei der Verwendung einer dreistelligen Nummer.

Wenn die erste Ziffer 0 ist, kann sie weggelassen werden und der Modus kann mit 3 Ziffern dargestellt werden. Der numerische Modus 0755 ist dasselbe wie 755 .

Um den numerischen Modus zu berechnen, können Sie auch eine andere Methode (Binärmethode) verwenden, die jedoch etwas komplizierter ist. Zu wissen, wie man den numerischen Modus mit 4, 2 und 1 berechnet, ist für die meisten Benutzer ausreichend.

Sie können die Berechtigungen der Datei in numerischer Notation mit stat überprüfen Befehl:

stat -c "%a" filename
644

Hier sind einige Beispiele für die Verwendung von chmod Befehl im numerischen Modus:

  • Geben Sie dem Eigentümer der Datei Lese- und Schreibberechtigungen und nur Leseberechtigungen für Gruppenmitglieder und alle anderen Benutzer:

    chmod 644 dirname
  • Geben Sie dem Eigentümer der Datei Lese-, Schreib- und Ausführungsberechtigungen, Lese- und Ausführungsberechtigungen für Gruppenmitglieder und keine Berechtigungen für alle anderen Benutzer:

    chmod 750 dirname
  • Geben Sie Lese-, Schreib- und Ausführungsberechtigungen und ein Sticky-Bit für ein bestimmtes Verzeichnis:

    chmod 1777 dirname
  • Lege rekursiv Lese-, Schreib- und Ausführungsberechtigungen für den Dateieigentümer und keine Berechtigungen für alle anderen Benutzer in einem bestimmten Verzeichnis fest:

    chmod -R 700 dirname

Verwendung einer Referenzdatei #

Die --reference=ref_file Mit der Option können Sie die Berechtigungen der Datei so festlegen, dass sie mit denen der angegebenen Referenzdatei (ref_file ).

chmod --reference=REF_FILE FILE

Der folgende Befehl weist beispielsweise die Berechtigungen von file1 zu zu file2

chmod --reference=file1 file2

Ändern Sie die Dateiberechtigungen rekursiv #

Um alle Dateien und Verzeichnisse unter dem angegebenen Verzeichnis rekursiv zu bearbeiten, verwenden Sie -R (--recursive ) Option:

chmod -R MODE DIRECTORY

Zum Beispiel, um die Berechtigungen aller Dateien und Unterverzeichnisse unter /var/www zu ändern Verzeichnis nach 755 Sie würden verwenden:

chmod -R 755 /var/www

Symbolische Links haben immer 777 Berechtigungen.

Standardmäßig wird beim Ändern der Berechtigungen von Symlinks chmod ändert die Berechtigungen für die Datei, auf die der Link zeigt.

chmod 755 symlink

Anstatt den Eigentümer des Ziels zu ändern, erhalten Sie wahrscheinlich die Fehlermeldung „Kann nicht auf „Symlink“ zugreifen:Berechtigung verweigert“.

Der Fehler tritt auf, weil Symlinks auf den meisten Linux-Distributionen standardmäßig geschützt sind und Sie nicht mit Zieldateien arbeiten können. Diese Option wird in /proc/sys/fs/protected_symlinks angegeben . 1 bedeutet aktiviert und 0 behindert. Es wird empfohlen, den Symlink-Schutz nicht zu deaktivieren.

Mehrere Dateiberechtigungen ändern #

Manchmal gibt es Situationen, in denen Sie Datei- und Verzeichnisberechtigungen massenhaft ändern müssen.

Das häufigste Szenario besteht darin, die Berechtigungen der Website-Datei rekursiv auf 644 zu ändern und die Berechtigungen des Verzeichnisses auf 755 .

Mit der numerischen Methode:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

Mit der symbolischen Methode:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Der find Der Befehl sucht nach Dateien und Verzeichnissen unter /var/www/my_website und übergeben Sie jede gefundene Datei und jedes Verzeichnis an chmod Befehl zum Festlegen der Berechtigungen.

Schlussfolgerung #

Der chmod Der Befehl ändert die Berechtigungen der Datei. Die Berechtigungen können entweder im symbolischen oder im numerischen Modus festgelegt werden.

Um mehr über chmod zu erfahren Besuchen Sie die chmod-Manpage.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Grundlagen der Linux-Dateiberechtigungen

  2. Linux-Berechtigungen:Eine Einführung in chmod

  3. Linux-wc-Befehl

  4. Linux grep-Befehl

  5. Linux-chmod-Befehl

Gzip-Befehl unter Linux

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Chmod-Befehl unter Linux

Chmod-Befehl – ​​So ändern Sie Dateiberechtigungen in Linux

Linux-Chmod-Befehlsbeispiele