Linux-Dateiberechtigungen erklärt
Jedes Linux-System verwendet Dateiberechtigungen, um zu kontrollieren, wer eine Datei lesen, schreiben oder ausführen kann. Wenn Sie diese falsch konfigurieren, sperren Sie entweder berechtigte Benutzer aus oder lassen sensible Dateien ungeschützt. Dieser Leitfaden erklärt, wie Dateieigentümerschaft und Berechtigungen unter Linux funktionieren, wie Sie die Berechtigungszeichenkette lesen und wie Sie Berechtigungen mit chmod und chown ändern.
Wichtigste Erkenntnisse
- Jede Datei hat einen Eigentümer, eine Gruppe und einen Berechtigungssatz für drei Klassen: Eigentümer, Gruppe und Andere.
- Berechtigungstripel verwenden
r(read/Lesen),w(write/Schreiben) undx(execute/Ausführen) – und verhalten sich bei Dateien anders als bei Verzeichnissen. - Verwenden Sie
chmodzum Ändern von Berechtigungen (symbolisch oder oktal) undchownzum Ändern der Eigentümerschaft. - Der
umask-Wert steuert die Standardberechtigungen für neu erstellte Dateien und Verzeichnisse. - Spezielle Bits (setuid, setgid, sticky) und POSIX-ACLs behandeln Fälle, die das Standardmodell nicht abdecken kann.
Wie Linux-Dateieigentümerschaft und -Berechtigungen strukturiert sind
Jeder Datei und jedem Verzeichnis unter Linux wird Folgendes zugewiesen:
- Ein Eigentümer (ein Benutzerkonto)
- Eine Gruppe (eine Gruppe von Benutzern)
- Ein Berechtigungssatz für drei Klassen: Eigentümer, Gruppe und Andere
Wenn ein Prozess versucht, auf eine Datei zuzugreifen, prüft der Kernel diese Klassen der Reihe nach – zuerst den Eigentümer, dann die Gruppe, dann die Anderen – und stoppt bei der ersten Übereinstimmung. Die Klassen schließen sich gegenseitig aus: Wenn Sie der Eigentümer sind, gelten nur die Eigentümer-Bits, selbst wenn die Gruppen-Bits permissiver sind.
Wie man rwx-Berechtigungen unter Linux liest
Führen Sie ls -l aus, um Berechtigungen anzuzeigen:
$ ls -l
-rw-r--r-- 1 alice developers 4017 Jun 1 10:00 config.conf
drwxr-x--- 2 alice developers 68 Jun 1 10:00 project/
Das erste Zeichen ist der Dateityp (- für reguläre Datei, d für Verzeichnis, l für Symlink). Die nächsten neun Zeichen sind drei Berechtigungstripel:
rw- r-- r--
↑ ↑ ↑
Eigentümer Gruppe Andere
Jedes Tripel verwendet drei Bits: r (read/Lesen), w (write/Schreiben), x (execute/Ausführen). Ein - bedeutet, dass diese Berechtigung nicht gesetzt ist.
Hinweis: Wenn Sie ein
+am Ende der Berechtigungszeichenkette sehen (z. B.-rw-r--r--+), hat die Datei eine POSIX-ACL angewendet. Das Standard-ls -lzeigt diese zusätzlichen Regeln nicht an – verwenden Siegetfacl, um sie zu inspizieren.
Was jedes Berechtigungsbit tatsächlich bewirkt
Bei Dateien:
| Bit | Wirkung |
|---|---|
r | Dateiinhalt lesen (cat, cp) |
w | Datei ändern oder überschreiben |
x | Datei als Programm oder Skript ausführen |
Bei Verzeichnissen:
| Bit | Wirkung |
|---|---|
r | Verzeichniseinträge auflisten (Dateinamen) |
w | Dateien darin erstellen, umbenennen oder löschen |
x | Verzeichnis durchlaufen (cd, Dateien über Pfad öffnen) |
Das Execute-Bit bei Verzeichnissen wird oft missverstanden. Ohne dieses können Sie nicht mit cd in das Verzeichnis wechseln oder auf eine Datei darin über ihren Pfad zugreifen – selbst wenn Sie Leseberechtigung haben.
Wie man Linux-Dateiberechtigungen mit chmod ändert
chmod akzeptiert sowohl symbolische als auch numerische (oktale) Modi.
Symbolischer Modus:
chmod u+x script.sh # Execute-Berechtigung für Eigentümer hinzufügen
chmod go-w config.conf # Schreibberechtigung von Gruppe und Anderen entfernen
chmod u=rwx,g=rx,o= app/ # Exakte Berechtigungen für alle Klassen setzen
chmod -R u=rwX,g=rX,o=rX /var/www/html # Rekursiv: großes X setzt Execute auf Verzeichnisse und Dateien, die bereits Execute haben
Numerischer (oktaler) Modus – jede Ziffer summiert r=4, w=2, x=1:
chmod 644 config.conf # Eigentümer rw, Gruppe r, Andere r
chmod 750 script.sh # Eigentümer rwx, Gruppe rx, Andere keine
chmod 700 ~/.ssh # Nur Eigentümer – korrekt für SSH-Verzeichnisse
Discover how at OpenReplay.com.
Wie man Dateieigentümerschaft mit chown ändert
chown ändert den Eigentümer, die Gruppe oder beides:
chown alice config.conf # Nur Eigentümer ändern
chown alice:developers config.conf # Eigentümer und Gruppe ändern
chown -R www-data:www-data /var/www # Rekursive Eigentümeränderung
Wie Standardberechtigungen mit umask gesetzt werden
Neue Dateien beginnen nicht mit offenen Berechtigungen. Der umask-Wert maskiert Bits vom Systemstandard aus (typischerweise 666 für Dateien, 777 für Verzeichnisse). Eine umask von 022 erzeugt 644-Dateien und 755-Verzeichnisse – der häufigste Standard auf Linux-Servern.
Wenn das übergeordnete Verzeichnis eine Standard-ACL konfiguriert hat, werden diese ACL-Regeln vererbt, anstatt sich rein auf die umask zu verlassen.
umask # Aktuelle umask anzeigen
umask 027 # Strengeren Standard setzen: Dateien 640, Verzeichnisse 750
Spezielle Berechtigungsbits: setuid, setgid und Sticky-Bit
Diese erweitern das Standardmodell für spezifische Anwendungsfälle:
- setuid (4xxx): Eine ausführbare Datei läuft mit den Rechten des Dateieigentümers. Wird von Systembinärdateien wie
/usr/bin/passwdverwendet. Gefährlich bei benutzerdefinierten Skripten – vermeiden Sie es. - setgid (2xxx) bei einem Verzeichnis: Neue Dateien erben die Gruppe des Verzeichnisses anstelle der primären Gruppe des Erstellers. Nützlich für gemeinsame Projektverzeichnisse.
- Sticky-Bit (1xxx) bei einem Verzeichnis: Nur der Dateieigentümer, Verzeichniseigentümer oder Root kann Dateien darin löschen. Standard bei
/tmp.
chmod 2775 /shared/project # setgid auf gemeinsames Verzeichnis
chmod 1777 /tmp # Sticky-Bit – standardmäßig bereits gesetzt
Über klassische Berechtigungen hinaus: ACLs und Sicherheitsmodule
Standard-rwx-Berechtigungen decken die meisten Anwendungsfälle ab, haben aber Grenzen. Wenn Sie einem bestimmten Benutzer Zugriff gewähren müssen, ohne die Gruppenmitgliedschaft zu ändern, verwenden Sie POSIX-ACLs über setfacl und getfacl. Auf Systemen mit SELinux oder AppArmor gelten Sicherheitsmodul-Richtlinien zusätzlich zu Standardberechtigungen – eine Datei kann auf UNIX-Ebene für alle lesbar sein, aber dennoch durch eine SELinux-Richtlinie blockiert werden.
Schnellreferenz: Häufige Berechtigungsmuster
| Modus | Symbolisch | Typische Verwendung |
|---|---|---|
644 | rw-r--r-- | Webserver-Konfigurationsdateien, öffentliche Inhalte |
755 | rwxr-xr-x | Verzeichnisse, ausführbare Skripte |
700 | rwx------ | Home-Verzeichnisse, SSH-Schlüssel-Verzeichnis |
600 | rw------- | Private Schlüsseldateien (~/.ssh/id_rsa) |
2775 | rwxrwsr-x | Gemeinsame Gruppenverzeichnisse |
1777 | rwxrwxrwt | Für alle beschreibbare Verzeichnisse wie /tmp |
Fazit
Linux-Dateiberechtigungen folgen einem konsistenten, vorhersehbaren Modell. Sobald Sie die Eigentümer/Gruppe/Andere-Struktur, die rwx-Bits und wie chmod und chown diese anwenden verstehen, haben Sie die Grundlage, um jede Datei oder jedes Verzeichnis korrekt zu sichern. Für Fälle, in denen das Drei-Klassen-Modell nicht granular genug ist, greifen Sie auf ACLs zurück – und behalten Sie immer das Prinzip der geringsten Rechte im Hinterkopf.
Häufig gestellte Fragen (FAQs)
Das Setzen von 777 gewährt Lese-, Schreib- und Ausführungsberechtigungen für jeden Benutzer im System. Während es alle Zugriffsbeschränkungen entfernt, bedeutet es auch, dass jeder Benutzer oder kompromittierte Prozess die Datei ändern oder löschen kann. Weisen Sie immer die minimal notwendigen Berechtigungen zu, damit eine Datei korrekt funktioniert.
chmod ändert, welche Aktionen (Lesen, Schreiben, Ausführen) für eine Datei erlaubt sind. chown ändert, wem die Datei gehört und zu welcher Gruppe sie gehört. Typischerweise verwenden Sie zuerst chown, um den richtigen Eigentümer und die Gruppe zuzuweisen, dann chmod, um die entsprechenden Berechtigungsbits für jede Klasse zu setzen.
Das Auflisten erfordert das Lese-Bit (r), aber das Betreten eines Verzeichnisses erfordert das Execute-Bit (x). Wenn ein Verzeichnis r, aber nicht x hat, können Sie Dateinamen mit ls sehen, aber nicht mit cd hineinwechseln oder eine Datei darin über ihren Pfad öffnen. Fügen Sie das Execute-Bit mit chmod hinzu, um dies zu beheben.
Verwenden Sie chmod mit einem großen X anstelle eines kleinen x. Das große X-Flag setzt Execute nur auf Verzeichnisse und Dateien, die bereits mindestens ein Execute-Bit gesetzt haben. Zum Beispiel wendet chmod -R u=rwX,g=rX,o=rX /pfad Execute auf Verzeichnisse an, während reguläre Dateien nicht ausführbar bleiben.
Gain control over your UX
See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.