Linux / Befehl chmod: Datei- und Verzeichnisberechtigungen ändern

chmod ändert die Lese-, Schreib- und Ausführungsrechte von Dateien und Verzeichnissen. Sie können entweder den numerischen Modus oder den symbolischen Modus verwenden, und es ist sicher, die aktuellen Berechtigungen des Ziels zu überprüfen, bevor Änderungen vorgenommen werden.

Berechtigungen gelten separat für den Eigentümer, die Gruppe und andere. Bei regulären Dateien bestimmt das Ausführungsbit, ob sie ausgeführt werden kann, und bei Verzeichnissen steuert das Ausführungsbit, ob der Pfad durchquert werden kann und ob Sie auf den Inhalt innerhalb zugreifen können. Der Befehl zum Ändern des Eigentümers lautet chown.

Grundlegende Syntax

chmod [options] mode file...

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung für Ihr aktuelles System mit man chmod.

Beispiele

Hinzufügen der Ausführungsberechtigung im symbolischen Modus

Fügt die Ausführungsberechtigung nur für den Eigentümer hinzu und lässt die anderen Berechtigungen unverändert.

chmod u+x script.sh

Festlegen von Berechtigungen im numerischen Modus

Ermöglicht es dem Besitzer, zu lesen und zu schreiben, und erlaubt der Gruppe und anderen nur das Lesen.

chmod 644 report.txt

Vor und nach den Änderungen prüfen

Überprüfen Sie den Modus der Zieldatei nach dem Ändern der Berechtigungen.

ls -l report.txt
chmod go-rwx report.txt
ls -l report.txt

Überprüfen Sie, ob die Berechtigungszahlen tatsächlich angewendet wurden.

640 bedeutet Besitzer lesen/schreiben, Gruppe lesen, keine Berechtigungen für andere. Das folgende Beispiel wendet es nur auf eine von Ihnen selbst erstellte Datei an und überprüft es dann mit stat.

printf 'demo\n' > demo.txt
chmod 640 demo.txt
stat -c '%a %n' demo.txt

Beispielausgabe:

640 demo.txt

Auch wenn chmod selbst erfolgreich ist, wird normalerweise nichts ausgegeben. Bei Verzeichnissen stellt das Ausführungsbit die Betretungs-/Suchberechtigung dar, sodass das mechanische Anwenden derselben Zahlen wie für eine Datei zu Zugriffsproblemen führen kann. Überprüfen Sie den Zielpfad und seine Unterelemente, bevor Sie rekursive Änderungen vornehmen.

Ein numerischer Modus setzt die Berechtigungsbits als Ganzes, während ein symbolischer Modus wie chmod g+w file nur die angeforderten Bits ändert. In einem gemeinsamen Verzeichnis sollten Eigentümer-, Gruppen- und andere Berechtigungen zusammen überprüft werden, und es sollte entschieden werden, ob die Datei wirklich ihr Ausführungsbit benötigt.

Hauptoptionen und Format

Optionen/Format Beschreibung
u/g/o/a Bezieht sich auf Eigentümer, Gruppe, andere und alle.
+ / - / = Bezieht sich auf das Hinzufügen, Entfernen oder Zuweisen von Berechtigungen.
r/w/x Bezieht sich auf Lese-, Schreib- und Ausführungsberechtigungen.
-R Rekursiv für Unterverzeichnisse und Dateien ändern.
--reference=file Denselben Modus wie die Referenzdatei anwenden.

Vorsichtsmaßnahmen bei der Verwendung

chmod -R 777 gewährt allen Benutzern umfassenden Zugriff, daher sollte es nicht aus Bequemlichkeit verwendet werden. Dateien und Verzeichnisse erfordern unterschiedliche Berechtigungen. Bevor rekursive Änderungen durchgeführt werden, überprüfen Sie den Zielbereich mit find oder ls, und beachten Sie auch Zugriffskontrollen über die Standardmodi hinaus, wie ACL und SELinux.

Häufig gestellte Fragen

Was bedeutet chmod 755?

Der Eigentümer hat Lese-, Schreib- und Ausführungsrechte (7), während die Gruppe und andere Lese- und Ausführungsrechte (5) haben. Es hat unterschiedliche Auswirkungen, wenn man es gleichermaßen auf reguläre Dateien und Verzeichnisse anwendet.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und Unterschiede je nach Implementierung in der offiziellen chmod-Dokumentation nachlesen.