Android

Chmod Befehl in Linux (Dateiberechtigungen)

Datei-Rechte in Linux ändern und verwalten [Terminal]

Datei-Rechte in Linux ändern und verwalten [Terminal]

Inhaltsverzeichnis:

Anonim

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.

In diesem Lernprogramm wird erläutert, wie Sie mit dem Befehl chmod die Zugriffsberechtigungen für Dateien und Verzeichnisse ändern.

Linux-Dateiberechtigungen

Bevor wir fortfahren, wollen wir das grundlegende Linux-Berechtigungsmodell erläutern.

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

  • Der Dateibesitzer. Die Gruppenmitglieder. Andere (alle anderen).

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

Es gibt drei Dateiberechtigungstypen, 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 dem Befehl ls angezeigt werden:

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. Es kann sich um eine reguläre Datei ( - ), ein Verzeichnis ( d ), eine symbolische Verknüpfung ( l ) oder einen anderen speziellen Dateityp handeln.

Die nächsten neun Zeichen stehen für die Dateiberechtigungen, drei Drillinge mit jeweils drei Zeichen. Das erste Triplet zeigt die Eigentümerberechtigungen, das zweite die Gruppenberechtigungen und das letzte Triplet zeigt alle anderen Berechtigungen. Die Berechtigungen können je nach Dateityp eine unterschiedliche Bedeutung haben.

Im obigen Beispiel bedeutet ( rw-r--r-- ), dass der Dateieigentümer über Lese- und Schreibberechtigungen ( rw- ) verfügt, die Gruppe und andere nur über Leseberechtigungen ( r-- ).

Jedes der drei Berechtigungs-Triplets kann aus den folgenden Zeichen bestehen und unterschiedliche Auswirkungen haben, je nachdem, ob es sich um eine Datei oder ein Verzeichnis handelt:

Auswirkung von Berechtigungen auf Dateien

Genehmigung Charakter Bedeutung in der 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 Wenn es im user Triplet gefunden wird, setzt es das setuid Bit. Wenn es im group , setzt es das setgid Bit. Dies bedeutet auch, dass das x Flag gesetzt ist.

Wenn die setuid oder setgid Flags für eine ausführbare Datei gesetzt sind, wird die Datei mit den Eigentümern und / oder Gruppenrechten der Datei ausgeführt.

S Wie s aber das x Flag ist nicht gesetzt. Dieses Flag wird nur selten für Dateien verwendet.
t Wenn es im others Triplett gefunden wird, setzt es das sticky Bit.

Dies bedeutet auch, dass das x Flag gesetzt ist. Dieses Flag ist für Dateien unbrauchbar.

T Wie t aber das x Flag ist nicht gesetzt. Dieses Flag ist für Dateien unbrauchbar.

Auswirkung von Berechtigungen auf Verzeichnisse (Ordner)

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

Genehmigung Charakter Bedeutung im Verzeichnis
Lesen - Der Inhalt des Verzeichnisses kann nicht angezeigt werden.
r Der Inhalt des Verzeichnisses kann angezeigt werden.

(zB können Sie Dateien innerhalb des Verzeichnisses mit ls .)

Schreiben - Der Inhalt des Verzeichnisses kann nicht geändert werden.
w Der Inhalt des Verzeichnisses kann geändert werden.

(zB Sie können keine neuen Dateien erstellen, Dateien löschen usw.)

Ausführen - Das Verzeichnis kann nicht in geändert werden.
x Das Verzeichnis kann mit cd .
s Wenn es im user Triplet gefunden wird, setzt es das setuid Bit. Wenn es im group , setzt es das setgid Bit. Dies bedeutet auch, dass das x Flag gesetzt ist. Wenn das Flag setgid für ein Verzeichnis gesetzt ist, 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 Wie s aber das x Flag ist nicht gesetzt. Dieses Flag ist für Verzeichnisse unbrauchbar.
t Wenn es im others Triplett gefunden wird, setzt es das sticky Bit.

Dies bedeutet auch, dass das x Flag gesetzt ist. Wenn das Sticky-Bit für ein Verzeichnis festgelegt ist, können nur der Eigentümer der Datei, der Eigentümer des Verzeichnisses oder der Administrator die Dateien im Verzeichnis löschen oder umbenennen.

T Wie t aber das x Flag ist nicht gesetzt. Dieses Flag ist für Verzeichnisse unbrauchbar.

chmod

Der Befehl chmod hat die folgende allgemeine Form:

chmod MODE FILE…

Mit dem Befehl chmod können Sie die Berechtigungen für eine Datei entweder in einem symbolischen oder numerischen Modus oder in einer Referenzdatei ändern. Wir werden die Modi später genauer erklären. 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 , insbesondere wenn Sie die Berechtigungen rekursiv ändern.

Symbolische (Text-) Methode

Die Syntax des Befehls chmod im symbolischen Modus hat folgendes Format:

chmod perms… FILE…

Der erste Satz von Flags ( ), Benutzerflags, definiert, für welche Benutzerklassen die Berechtigungen für die Datei geändert werden.

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

Wenn das Benutzerflag weggelassen wird, ist das Standardflag a und die von umask festgelegten Berechtigungen sind nicht betroffen.

Der zweite Satz von Flags ( ), die Operationsflags, definieren, ob die Berechtigungen entfernt, hinzugefügt oder festgelegt werden sollen:

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

Die Berechtigungen ( perms… ) können explizit mit keinem oder einem oder mehreren der folgenden Buchstaben festgelegt werden: r , w , x , X , s und t . Verwenden Sie einen einzelnen Buchstaben aus der Gruppe u , g und o wenn Sie Berechtigungen von einer Benutzerklasse in eine andere Benutzerklasse kopieren.

Wenn Sie Berechtigungen für mehr als eine Benutzerklasse festlegen ( ), trennen Sie die symbolischen Modi durch Kommas (ohne Leerzeichen).

Im Folgenden finden Sie einige Beispiele für die Verwendung des Befehls chmod im symbolischen Modus:

  • Erteilen Sie den Mitgliedern der Gruppe die Berechtigung, die Datei zu lesen, jedoch nicht zu schreiben und auszuführen:

    chmod g=r filename

    Entfernen Sie die Ausführungsberechtigung für alle Benutzer:

    chmod ax filename

    Entfernen Sie abstoßend die Schreibberechtigung für andere Benutzer:

    chmod -R ow dirname

    Entfernen Sie die Lese-, Schreib- und Ausführungsberechtigung für alle Benutzer mit Ausnahme des Dateieigentümers:

    chmod og-rwx filename

    Dasselbe kann auch mit dem folgenden Formular erreicht werden:

    chmod og= filename

    Erteilen Sie dem Eigentümer der Datei Lese-, Schreib- und Ausführungsberechtigungen, Leseberechtigungen für die Dateigruppe und keine Berechtigungen für alle anderen Benutzer:

    chmod u=rwx, g=r, o= filename

    Fügen Sie die Besitzerberechtigungen der Datei zu den Berechtigungen hinzu, über die die Mitglieder der Dateigruppe verfügen:

    chmod g+u filename

    Fügen Sie einem bestimmten Verzeichnis ein Sticky-Bit hinzu:

    chmod o+t dirname

Numerische Methode

Die Syntax des Befehls chmod bei Verwendung einer numerischen Methode hat das folgende Format:

chmod NUMBER FILE…

Im numerischen Modus 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 die 3-stellige Nummer verwendet wird, repräsentiert die erste Ziffer die Berechtigungen des Dateieigentümers, die zweite der Dateigruppe und die letzte aller anderen Benutzer.

Alle Schreib-, Lese- und Ausführungsberechtigungen haben 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 Gesamtsummen für alle Benutzerklassen. Wenn Sie beispielsweise dem Eigentümer der Datei Lese-, Schreib- und Ausführungsberechtigungen erteilen möchten, Lese- und Ausführungsberechtigungen für die Dateigruppe und nur für alle anderen Benutzer, gehen Sie folgendermaßen vor:

  • Besitzer: rwx = 4 + 2 + 1 = 7Gruppe: rx = 4 + 0 + 1 = 5Sonstige: rx = 4 + 0 + 0 = 4

Mit der obigen Methode kommen wir zu der Nummer 754 , die die gewünschten Berechtigungen darstellt.

Verwenden Sie zum Einrichten der setuid , setgid und sticky bit Flags eine vierstellige Zahl.

Wenn die 4-stellige Nummer verwendet wird, hat die erste Ziffer die folgende Bedeutung:

  • setuid = 4setgid = 2sticky = 1no changes = 0

Die nächsten drei Ziffern haben die gleiche Bedeutung wie bei 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 der gleiche wie 755 .

Um den numerischen Modus zu berechnen, können Sie auch eine andere Methode (binäre Methode) verwenden, die jedoch etwas komplizierter ist. Für die meisten Benutzer ist es ausreichend zu wissen, wie der numerische Modus mit 4, 2 und 1 berechnet wird.

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

stat -c "%a" filename

644

Im Folgenden finden Sie einige Beispiele für die Verwendung des Befehls chmod im numerischen Modus:

  • Erteilen Sie dem Eigentümer der Datei Lese- und Schreibrechte und nur den Gruppenmitgliedern und allen anderen Benutzern:

    chmod 644 dirname

    Erteilen 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

    Vergeben Sie Lese-, Schreib- und Ausführungsberechtigungen und ein Sticky-Bit für ein bestimmtes Verzeichnis:

    chmod 1777 dirname

    Legen Sie 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

Verwenden einer Referenzdatei

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

chmod --reference=REF_FILE FILE

Mit dem folgenden Befehl werden beispielsweise die Berechtigungen von file1 zu file2 file1

chmod --reference=file1 file2

Ändern Sie die Berechtigungen der Datei rekursiv

Verwenden Sie die Option -R ( --recursive ), um alle Dateien und Verzeichnisse im angegebenen Verzeichnis rekursiv zu --recursive :

chmod -R MODE DIRECTORY

Um beispielsweise die Berechtigungen aller Dateien und Unterverzeichnisse im Verzeichnis /var/www auf 755 zu ändern, verwenden Sie Folgendes:

chmod -R 755 /var/www

Arbeiten mit symbolischen Links

Symbolische Links haben immer 777 Berechtigungen.

Wenn Sie die Berechtigungen von symlink ändern, ändert chmod standardmäßig die Berechtigungen für die Datei, auf die der Link verweist.

chmod 755 symlink

Anstatt den Eigentümer des Ziels zu ändern, wird möglicherweise der Fehler "Kein Zugriff auf Symlink: Berechtigung verweigert" angezeigt.

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

Ändern von Dateiberechtigungen in loser Schüttung

Manchmal gibt es Situationen, in denen Sie die Berechtigungen für Dateien und Verzeichnisse in großen Mengen ändern müssen.

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

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 Befehl find sucht nach Dateien und Verzeichnissen unter /var/www/my_website und /var/www/my_website alle gefundenen Dateien und Verzeichnisse an den Befehl chmod , um die Berechtigungen /var/www/my_website .

Fazit

Der Befehl chmod ä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.

chmod terminal