Server Vps Linux Chmod

Linux-Dateirechte und chmod sicher verstehen

Linux-Dateiberechtigungen mit chmod sicher ändern: 755 und 644 lesen, Dateien und Verzeichnisse trennen sowie umask und ACLs prüfen.

Thomas Schneider
Thomas Schneider

Dedizierte Server, Colocation und Betriebsrisiken

Er bewertet Dedicated Server, Colocation, Speicher, Netzwerkqualität und technische Hilfe unter realen Betriebsbedingungen.

8 Min. Lesezeit

Linux-Dateiberechtigungen ändern Sie mit chmod, nachdem Sie Eigentümer, Gruppe, andere Benutzer und den Objekttyp geprüft haben. Verwenden Sie symbolische Modi für gezielte Änderungen, lesen Sie oktale Werte als drei getrennte Rechteblöcke und behandeln Sie Verzeichnisse, ACLs, umask sowie rekursive Eingriffe als eigene Fälle statt als Varianten desselben Rezepts.

Vor chmod den Istzustand lesen

Ein Fehler mit Berechtigungen ist zuerst eine Identitätsfrage. Welcher Benutzer greift zu, zu welchen Gruppen gehört er, wem gehört das Objekt und gibt es zusätzliche ACL-Einträge? Ein korrekt berechneter Modus hilft nicht, wenn der Dienst unter einem anderen Konto läuft oder eine ACL-Maske den wirksamen Zugriff begrenzt.

Die Reihenfolge bleibt nüchtern: erst das Risiko benennen, dann den Prüfpunkt festlegen, danach entscheiden. Wer direkt mit chmod beginnt, verändert den Befund, bevor er ihn verstanden hat.

Prüfen Sie mindestens diese Punkte:

  • Identität: id zeigt die aktuelle Benutzer- und Gruppenmitgliedschaft.
  • Objekt: ls und stat zeigen Typ, Modus, Eigentümer und Gruppe.
  • Pfad: Jedes Elternverzeichnis muss für den zugreifenden Benutzer durchquerbar sein.
  • ACL: getfacl zeigt benannte Benutzer, Gruppen und deren wirksame Maske.
id
ls -ld -- /PATH
stat -c '%A %a %U %G %n' -- /PATH
getfacl -p -- /PATH

PATH ist ein Platzhalter. Ersetzen Sie ihn durch den exakten Datei- oder Verzeichnispfad. Das doppelte Bindestrichpaar beendet bei diesen Werkzeugen die Optionen, damit ein Name mit führendem Minus nicht als Schalter gelesen wird. Prüfen Sie die lokale Handbuchseite, wenn eine andere Implementierung als GNU Coreutils installiert ist.

Das Grundmodell: Eigentümer, Gruppe und Andere

Klassische Linux-Modusbits bilden drei Benutzerklassen ab. u steht für den Eigentümer, g für die zugeordnete Gruppe und o für alle übrigen Benutzer. a fasst alle drei Klassen zusammen. Die Gruppenklasse meint nicht jeden Benutzer mit irgendeiner Gruppe, sondern Prozesse, deren wirksame oder ergänzende Gruppe zum Objekt passt.

Innerhalb jeder Klasse gibt es drei Bits:

BitOktalwertBei einer DateiBei einem Verzeichnis
r4Inhalt lesenNamen im Verzeichnis auflisten
w2Inhalt verändernEinträge anlegen oder entfernen
x1Datei ausführenPfad durchqueren und Einträge adressieren

Verzeichnisrechte wirken als Kombination. Schreibrecht allein garantiert nicht, dass ein Benutzer einen Eintrag sinnvoll anlegen oder entfernen kann; dafür ist normalerweise auch das Durchquerungsrecht nötig. Umgekehrt kann x ohne r den Zugriff auf einen bekannten Namen erlauben, obwohl eine Verzeichnisliste nicht gelesen werden kann.

Noch wichtiger: Das Löschen einer Datei hängt von den Rechten am Elternverzeichnis ab. Das Schreibbit der Datei schützt ihren Namen nicht vor einem Benutzer, der im Verzeichnis Einträge verändern darf. Das ist einer der Gründe, warum eine reine Betrachtung der Datei regelmäßig in die falsche Richtung führt.

Berechtigungsmatrix mit Eigentümer, Gruppe und Anderen sowie den Bits Lesen, Schreiben und Ausführen
Jede oktale Stelle gehört zu einer Benutzerklasse. Das x-Bit startet eine Datei, bei einem Verzeichnis erlaubt es das Durchqueren des Pfads.

Die Ziffern beantworten nur, welche Bits gesetzt sind. Ob sie sinnvoll sind, hängt vom Objekt, Eigentümer, Gruppenmodell, ACLs und Dienstkonto ab.

Symbolische Modi ändern eine Absicht

Der symbolische Modus besteht aus Klasse, Operation und Rechten. Plus fügt Bits hinzu, Minus entfernt sie, Gleich setzt die genannten Rechte für die gewählte Klasse neu. Symbolische Änderungen sind leichter zu prüfen, wenn nur eine konkrete Eigenschaft geändert werden soll.

chmod u+x -- /PATH/SCRIPT
chmod go-w -- /PATH/FILE

Die erste Zeile ist nur für eine Datei gedacht, die tatsächlich ein ausführbares Skript oder Programm sein soll. Die zweite entfernt Schreibrecht bei Gruppe und Anderen, lässt alle übrigen Bits aber bestehen. Lassen Sie die Klasse nicht weg: Ihre umask kann beeinflussen, welche Klassen ein symbolischer Modus ohne Klassenangabe anspricht.

Wenn ein exakter Endzustand gefordert ist, schreiben Sie alle drei Klassen aus. Das folgende Beispiel passt nur zu einer normalen Datei, die der Eigentümer ändern, die Gruppe lesen und Andere nicht lesen dürfen:

chmod u=rw,g=r,o= -- /PATH/FILE
stat -c '%A %a %U %G %n' -- /PATH/FILE

Für ein gemeinsam lesbares Verzeichnis könnte die Richtlinie anders aussehen, weil Durchqueren erforderlich ist:

chmod u=rwx,g=rx,o= -- /PATH/DIRECTORY
stat -c '%A %a %U %G %n' -- /PATH/DIRECTORY

Diese Beispiele sind keine Standardwerte für jeden Webserver. Sie zeigen, wie eine vorher festgelegte Richtlinie ausgedrückt und anschließend kontrolliert wird. Ein Rechteproblem wird nicht besser, nur weil die Zahl vertraut aussieht. Wenn das gewünschte Ergebnis nicht in einem Satz beschrieben werden kann, ist der Befehl noch nicht reif für die Ausführung.

Oktale Modi setzen einen Endzustand

Oktale Modi verdichten r, w und x zu einer Ziffer pro Benutzerklasse. Lesen zählt 4, Schreiben 2 und Ausführen beziehungsweise Durchqueren 1. Die erste Stelle gehört dem Eigentümer, die zweite der Gruppe, die dritte den Anderen.

ModusEigentümerGruppeAndereWas daraus folgt
755rwxr-xr-xKann für ein durchquerbares Verzeichnis oder bewusst ausführbares Programm passen.
644rw-r–r–Kann für öffentlich lesbare, nicht ausführbare Dateien passen.

755 und 644 sind Zerlegungen, keine Empfehlungen. Eine Konfigurationsdatei mit Geheimnissen darf nicht allein deshalb für Gruppe und Andere lesbar werden, weil 644 häufig in Anleitungen steht. Ein Upload-Verzeichnis braucht möglicherweise ein Gruppenmodell, das mit einer pauschalen 755-Vorgabe nicht funktioniert.

Numerische Modi setzen die gewöhnlichen Bits normalerweise absolut. Damit sind sie kompakt, überschreiben aber auch Unterschiede, die vorher absichtlich bestanden. Symbolische Modi sind oft geeigneter, wenn nur ein einzelnes Recht korrigiert werden soll.

chmod ändert keine Eigentümer

chmod verändert Modusbits. Eigentümer und Gruppe bleiben unverändert. Wenn ein Dienst wegen eines falschen Besitzers nicht schreiben kann, macht ein breiterer Modus das Symptom vielleicht unsichtbar, aber die Zuständigkeit bleibt falsch.

id USER
stat -c '%U %G %A %n' -- /PATH/FILE

Nur wenn der gewünschte Eigentümer und die gewünschte Gruppe fachlich geklärt sind, gehört ein Eigentümerwechsel in den Plan:

chown USER:GROUP -- /PATH/FILE

USER und GROUP sind Platzhalter. Ein fehlgeschlagenes chmod ist kein Anlass, chown mit erhöhten Rechten auszuprobieren. Prüfen Sie zuerst, welches Dienstkonto den Pfad benötigt, welche Gruppe den gemeinsamen Zugriff abbildet und ob ein Paket oder ein Deployment den Eigentümer absichtlich gesetzt hat.

umask gilt bei der Erzeugung, nicht rückwirkend

umask ist die Erzeugungsmaske des Shell-Prozesses. Sie entfernt Rechte aus dem Modus, den ein Programm für ein neues Objekt anfordert. Eine geänderte umask repariert keine vorhandene Datei. Kindprozesse erben die Maske, weshalb ein Dienst eine andere Erzeugungswirkung haben kann als Ihre interaktive Shell.

umask
umask -S

Eine typische Ausgabe wie 022 bedeutet, dass Schreibrechte für Gruppe und Andere bei neu erzeugten Objekten entfernt werden. 077 ist strenger und entfernt bei der Erzeugung alle Gruppen- und Anderenrechte. Das sind Beschreibungen der Maske, keine Aufforderung, sie systemweit zu setzen.

Hat das Elternverzeichnis eine Default-ACL, wird die Erzeugung stattdessen aus dieser ACL und dem vom Programm angeforderten Modus abgeleitet. Wer nur die umask betrachtet, kann deshalb trotz korrekter Rechnung ein anderes Ergebnis erhalten.

ACLs erklären Rechte, die ls nicht vollständig zeigt

ACLs ergänzen Eigentümer, Gruppe und Andere um benannte Benutzer und Gruppen. getfacl zeigt außerdem eine Maske. Diese Maske begrenzt die wirksamen Rechte benannter Benutzer und Gruppen sowie der Gruppenklasse. Ein ACL-Eintrag kann daher mehr Buchstaben tragen, als im Kommentar effective tatsächlich wirksam sind.

getfacl -p -- /PATH
setfacl --test -m u:USER:r-X -- /PATH

Der zweite Befehl läuft im Testmodus und zeigt den erwarteten ACL-Zustand, ohne ihn zu schreiben. Das große X setzt das Ausführungsrecht nur bei Verzeichnissen oder bei Dateien, die bereits für eine Klasse ausführbar sind. Prüfen Sie vor einer echten Änderung auch die ACL-Maske; setfacl kann sie neu berechnen.

chmod und ACLs beeinflussen einander. Die klassischen Gruppenbits können einer ACL-Maske entsprechen. Eine chmod-Änderung kann dadurch den wirksamen Zugriff benannter ACL-Einträge verändern. Wenn ls hinter dem Modus ein Zusatzzeichen zeigt, gehört getfacl zwingend zur Diagnose.

Rekursive Änderungen mischen meist Dateien und Verzeichnisse, obwohl x für beide etwas anderes bedeutet. Ein pauschaler rekursiver Modus kann normale Dateien ausführbar machen, Verzeichnisse undurchquerbar setzen oder absichtlich unterschiedliche Rechte vereinheitlichen. Wenn dadurch ein Dienst ausfällt, zählt Reaktionszeit in Minuten.

Ermitteln Sie zuerst getrennt, was betroffen wäre:

find /PATH -type d -print
find /PATH -type f -print

Diese Befehle ändern nichts. Prüfen Sie Mountgrenzen, Symlinks, Dateitypen und die Zahl der Treffer. GNU chmod behandelt einen Symlink als direktes Argument anders als Links während einer rekursiven Traversierung. Optionen, die Links bei Rekursion verfolgen, vergrößern die Angriffs- und Fehlerfläche.

Sichern Sie vor einer Massenänderung Modus, Eigentümer, Gruppe und ACLs in eine geschützte neue Datei:

getfacl -R -p -- /PATH > /SAFE/permissions.acl
setfacl --test --restore=/SAFE/permissions.acl

Die Umleitung mit größer-als legt die Zieldatei neu an oder kürzt sie. Verwenden Sie einen neuen, geschützten Pfad außerhalb des zu ändernden Baums. Lesen und testen Sie die Sicherung. Erst danach kann eine Wiederherstellung mit setfacl geplant werden; dafür sind passende Rechte und Unterstützung durch Dateisystem sowie Werkzeuge nötig.

Eine kontrollierte Änderung in fünf Schritten

  1. Lesen Sie Identität, Objekttyp, Modus, Eigentümer, Gruppe und ACL.
  2. Formulieren Sie den gewünschten Zugriff getrennt für Eigentümer, Gruppe und Andere.
  3. Wählen Sie symbolisch für eine gezielte Änderung oder oktal für einen geprüften Endzustand.
  4. Ändern Sie zunächst genau ein Objekt und kontrollieren Sie Modus sowie Zugriff.
  5. Planen Sie Rekursion erst mit Trefferliste, Sicherung und getesteter Wiederherstellung.

Prüfliste

  • Identität prüfen: Benutzer, Gruppen und Dienstkonto abgleichen; ein falsches Konto darf nicht durch breitere Rechte kaschiert werden.
  • Objekt prüfen: Datei, Verzeichnis und Elternpfad getrennt bewerten; x hat je nach Objekttyp eine andere Wirkung.
  • Zusatzregeln prüfen: ACL-Maske und Default-ACL lesen; sichtbare Modusbits können den wirksamen Zugriff unvollständig erklären.
  • Änderung begrenzen: Ein Objekt vor einem Baum ändern; Rekursion ohne Trefferliste und Sicherung ist ein Stoppsignal.
  • Rückweg prüfen: ACL-Sicherung und Testwiederherstellung kontrollieren; eine ungeprüfte Sicherungsdatei ist kein Wiederherstellungsplan.

Häufige Fragen

Was bedeutet chmod 755?
755 setzt rwx für den Eigentümer und r-x für Gruppe sowie Andere. Das kann zu einem Verzeichnis oder bewusst ausführbaren Programm passen, ist aber kein universeller Modus für jeden Webpfad.
Was bedeutet chmod 644?
644 setzt rw- für den Eigentümer und r– für Gruppe sowie Andere. Das kann zu einer öffentlich lesbaren Datei passen, darf aber nicht blind auf Dateien mit Geheimnissen oder internen Daten übertragen werden.
Warum funktioniert chmod trotz richtiger Zahl nicht?
Prüfen Sie Eigentümer, Gruppenmitgliedschaft, alle Elternverzeichnisse und ACLs. Eine ACL-Maske kann Rechte begrenzen, und ein Dienst kann unter einem anderen Konto laufen als Ihre Shell.
Soll ich chmod rekursiv auf einen Webordner anwenden?
Nicht ohne getrennte Regeln für Dateien und Verzeichnisse, eine vollständige Trefferliste sowie eine getestete Sicherung. Rekursion vereinheitlicht sonst Rechte, die aus gutem Grund verschieden waren.

Fazit

chmod ist der letzte Schritt einer Rechtekorrektur, nicht der erste. Lesen Sie zunächst Identität, Eigentümer, Gruppe, Objekttyp und ACL. Formulieren Sie danach den gewünschten Zugriff und ändern Sie den kleinsten Pfad. Wer bei Rekursion keinen belastbaren Rückweg hat, hat noch keinen ausführbaren Plan.

Vorbereitet von

Thomas Schneider
Thomas Schneider

Dedizierte Server, Colocation und Betriebsrisiken

Er bewertet Dedicated Server, Colocation, Speicher, Netzwerkqualität und technische Hilfe unter realen Betriebsbedingungen.

Geprüfte Fakten

HostScout editorial

Verwandte Artikel