Arbeitest du regelmässig auf der Kommandozeile oder administrierst Server, wirst du sicherlich auf das Problem stossen, dass du eine Datei erstellen oder bearbeiten möchtest, aber aufgrund fehlender Zugriffsrechte eine Fehlermeldung erhältst. In der Regel können solche Fehler durch das Anpassen der Dateiberechtigungen oder des Besitzers behoben werden.

Da Unix-basierte Systeme Multi-User-Systeme sind, erfolgt der Zugriff auf Dateien über Dateiberechtigungen, -attribute und -eigentümer. Das stellt sicher, dass nur berechtigte Nutzer und Prozesse auf die Dateien und Ordner zugreifen können.

Mehr Informationen zu Dateiberechtigungen erhältst du im Artikel zum Befehl Umask.

Dieser Artikel erklärt, wie du Berechtigungen von Dateien und Verzeichnissen rekursiv änderst.

Rekursives Chmod

Mithilfe des chmod-Befehls kannst du die Berechtigungen von Dateien im symbolischen oder numerischen Modus ändern.

Um rekursiv alle Dateien und Ordner innerhalb eines bestimmten Ordners zu bearbeiten, nutze den Befehl chmod zusammen mit der Option -R (--recursive). Die grundlegende Syntax zum rekursiven Ändern der Dateiberechtigungen sieht wie folgt aus:

chmod -R MODE DIRECTORY

Um beispielsweise die Berechtigungen aller Dateien und Unterordner im Ordner /var/www/html auf 755 zu setzen, verwende:

chmod -R 755 /var/www/html

Der Modus kann auch mit der symbolischen Methode angegeben werden:

chmod -R u=rwx,go=rx /var/www/html

Nur root, der Dateieigentümer oder ein Benutzer mit sudo-Berechtigungen kann die Berechtigungen einer Datei ändern. Sei äußerst vorsichtig, wenn du Dateiberechtigungen rekursiv anpasst.

Den find-Befehl verwenden

Normalerweise sollten Dateien und Ordner nicht dieselben Berechtigungen haben. Die meisten Dateien benötigen keine Ausführungsberechtigung, während du für die Ordner Ausführungsberechtigungen festlegen musst, um in sie wechseln zu können.

Das übliche Vorgehen ist, die Berechtigungen für die Dateien einer Website rekursiv auf 644 und die Berechtigungen für die Ordner auf 755 zu ändern.

Verwendung der numerischen Methode:

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

Verwendung der symbolischen Methode:

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

Der find-Befehl sucht nach Dateien oder Ordnern unter /var/www/html und übergibt jede gefundene Datei oder jeden gefundenen Ordner an den chmod-Befehl, um die Berechtigungen festzulegen.

Wenn du find zusammen mit -exec verwendest, wird der chmod-Befehl für jeden gefundenen Eintrag ausgeführt. Um den Prozess zu beschleunigen, verwende den xargs-Befehl, um mehrere Einträge auf einmal zu übergeben:

find /var/www/html -type d -print0 | xargs -0 chmod 755 find /var/www/html -type f -print0 | xargs -0 chmod 644

Zusammenfassung

Der Befehl chmod in Verbindung mit der Option -R ermöglicht es dir, Dateiberechtigungen rekursiv zu ändern.

Um die Berechtigungen von Dateien rekursiv basierend auf ihrem Typ festzulegen, verwende chmod in Kombination mit dem Befehl find.