Wie man Dateiberechtigungen in Linux überprüft: Ein vollständiger Leitfaden
Linux betreibt die Mehrheit der weltweiten Server — von VPS Hosting-Umgebungen bis hin zu Enterprise-Grade Dedicated Servers — und das aus gutem Grund. Es ist schnell, stabil und mit Sicherheit im Kern aufgebaut. Eine der grundlegendsten Säulen dieser Sicherheit ist das Dateiberechtigungssystem: ein präziser, eleganter Mechanismus, der genau kontrolliert, wer eine Datei oder ein Verzeichnis auf dem System lesen, ändern oder ausführen kann.
Egal ob Sie ein Entwickler sind, der eine Webanwendung bereitstellt, ein Systemadministrator, der einen Server absichert, oder ein Anfänger, der die Befehlszeile erlernt — das Verständnis, wie man Dateiberechtigungen in Linux überprüft und interpretiert, ist eine unverzichtbare Fähigkeit. Dieser Leitfaden behandelt alles, was Sie wissen müssen — von den Grundlagen des Berechtigungsmodells bis zu erweiterten Special Bits — mit praktischen Befehlen und realen Beispielen.
Was sind Linux-Dateiberechtigungen?
Jede einzelne Datei und jedes Verzeichnis in Linux hat einen Satz von Berechtigungen, die daran angehängt sind. Diese Berechtigungen definieren, welche Aktionen erlaubt sind und von wem. Es gibt drei grundlegende Berechtigungstypen:
| Berechtigung | Symbol | Was es bei einer Datei tut | Was es bei einem Verzeichnis tut |
|---|---|---|---|
| Lesen | r | Den Inhalt der Datei anzeigen | Die Namen der Dateien darin auflisten |
| Schreiben | w | Die Datei ändern oder löschen | Dateien darin erstellen oder entfernen |
| Ausführen | x | Die Datei als Programm ausführen | Das Verzeichnis betreten (hineinnavigieren) |
Diese drei Berechtigungen werden unabhängig auf drei verschiedene Benutzerkategorien angewendet:
- Besitzer (Benutzer) — Der Benutzer, dem die Datei gehört, normalerweise ihr Ersteller.
- Gruppe — Jeder Benutzer, der zur zugewiesenen Gruppe der Datei gehört.
- Andere — Alle anderen auf dem System.
Diese Drei-mal-Drei-Matrix von Berechtigungen gibt Linux-Administratoren granulare, leistungsstarke Kontrolle über den Zugriff auf jede Ressource auf dem System.
Dateiberechtigungen überprüfen: Der ls -l-Befehl
Die schnellste und am häufigsten verwendete Methode zum Überprüfen von Dateiberechtigungen ist der ls -l-Befehl (Langlistenformat).
ls -l file.txtBeispielausgabe:
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txtLassen Sie uns jede Komponente dieser Ausgabe aufschlüsseln:
- rw- r-- r-- 1 alice developers 1024 Aug 16 12:30 file.txt
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ └─ Filename
│ │ │ │ │ │ │ │ └─ Last modified
│ │ │ │ │ │ │ └─ File size (bytes)
│ │ │ │ │ │ └─ Group name
│ │ │ │ │ └─ Owner name
│ │ │ │ └─ Number of hard links
│ │ │ └─ Others' permissions
│ │ └─ Group's permissions
│ └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)Also -rw-r--r-- sagt uns:
- Besitzer (
alice): Lesen + Schreiben (rw-) - Gruppe (
developers): Nur Lesen (r--) - Andere: Nur Lesen (
r--)
Berechtigungen für mehrere Dateien überprüfen
Um Berechtigungen für alle Dateien in einem Verzeichnis auf einmal zu sehen:
ls -la /var/www/htmlDas -a-Flag schließt versteckte Dateien ein (solche, die mit einem Punkt beginnen). Dies ist besonders nützlich beim Überprüfen von Webserver-Verzeichnissen in einer Shared Web Hosting– oder VPS-Umgebung.
Detaillierte Berechtigungsinformationen mit stat abrufen
Für eine gründlichere Aufschlüsselung — einschließlich sowohl symbolischer als auch numerischer Darstellungen — verwenden Sie den stat-Befehl:
stat file.txtBeispielausgabe:
File: file.txt
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000Die Schlüsselzeile ist:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Dies gibt Ihnen:
- Numerische (Oktal-)Notation:
0644 - Symbolische Notation:
-rw-r--r-- - Benutzer-ID (UID) und Gruppen-ID (GID) mit ihren lesbaren Namen
Der stat-Befehl ist von unschätzbarem Wert bei der Behebung von Berechtigungsfehlern auf Produktionsservern, da er alle erforderlichen Kontextinformationen in einer einzigen Ausgabe liefert.
Numerische (Oktal-)Berechtigungsnotation verstehen
Linux-Berechtigungen können als Zahlen ausgedrückt werden, was das Format ist, das von Befehlen wie chmod verwendet wird. Jeder Berechtigungstyp wird einem Wert zugewiesen:
| Berechtigung | Numerischer Wert |
|---|---|
Lesen (r) | 4 |
Schreiben (w) | 2 |
Ausführen (x) | 1 |
Keine Berechtigung (-) | 0 |
Sie berechnen den Berechtigungswert für jede Benutzerkategorie durch Addieren der Werte zusammen:
| Kombination | Berechnung | Numerischer Wert |
|---|---|---|
rwx | 4 + 2 + 1 | 7 |
rw- | 4 + 2 + 0 | 6 |
r-x | 4 + 0 + 1 | 5 |
r-- | 4 + 0 + 0 | 4 |
--- | 0 + 0 + 0 | 0 |
Eine dreistellige Oktalzahl stellt den vollständigen Berechtigungssatz dar:
0644 → Owner: 6 (rw-) | Group: 4 (r--) | Others: 4 (r--)
0755 → Owner: 7 (rwx) | Group: 5 (r-x) | Others: 5 (r-x)
0700 → Owner: 7 (rwx) | Group: 0 (---) | Others: 0 (---)Berechtigungen für Verzeichnisse überprüfen
Verzeichnisse verwenden das gleiche Berechtigungsmodell, aber die Bedeutung jedes Bits ist leicht unterschiedlich. Verwenden Sie ls -ld (beachten Sie das -d-Flag), um das Verzeichnis selbst statt seines Inhalts zu überprüfen:
ls -ld myfolderBeispielausgabe:
drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolderDas führende d bestätigt, dass dies ein Verzeichnis ist. Die Berechtigungen werden wie folgt aufgeschlüsselt:
- Besitzer (
alice):rwx— Kann Dateien auflisten, erstellen/löschen und das Verzeichnis betreten - Gruppe (
developers):r-x— Kann Dateien auflisten und betreten, aber nicht erstellen oder löschen - Andere:
---— Kein Zugriff
> Wichtig: Das Ausführungsbit (x) in einem Verzeichnis bedeutet die Möglichkeit, es zu betreten (d. h. cd zu verwenden). Ohne x kann ein Benutzer nicht in das Verzeichnis navigieren, selbst wenn er Leseberechtigung hat. Dies ist eine häufige Quelle der Verwirrung für Anfänger.
Special Permission Bits: setuid, setgid und Sticky Bit
Über die standardmäßigen neun Berechtigungsbits hinaus unterstützt Linux drei Special Permission Bits, die erweiterte Zugriffskontrolle bieten:
1. setuid (s auf dem Ausführungsbit des Besitzers)
Wenn auf einer ausführbaren Datei gesetzt, wird das Programm mit den Berechtigungen des Dateieigentümers ausgeführt, nicht mit denen des aufrufenden Benutzers. So können reguläre Benutzer mit Befehlen wie passwd /etc/shadow ändern (das dem Benutzer root gehört).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwdDas s in der Ausführungsposition des Besitzers zeigt setuid an.
2. setgid (s auf dem Ausführungsbit der Gruppe)
Bei einer Datei wird das Programm mit den Berechtigungen der Gruppe ausgeführt. Bei einem Verzeichnis erben neue Dateien, die darin erstellt werden, automatisch die Gruppe des Verzeichnisses — nützlich für gemeinsame Projektordner.
ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project3. Sticky Bit (t auf dem Ausführungsbit der Anderen)
Wenn auf einem Verzeichnis gesetzt, können nur der Eigentümer der Datei (oder root) Dateien darin löschen oder umbenennen, selbst wenn andere Schreibberechtigung haben. Dies ist die Standardkonfiguration für /tmp:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpDas t am Ende signalisiert, dass das Sticky Bit aktiv ist.
Numerische Darstellung von Special Bits:
| Special Bit | Numerischer Wert |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky Bit | 1000 |
Also drwxrwxrwt = 1777 (1000 + 777).
Vollständige Berechtigungsreferenztabelle
| Symbolisch | Numerisch | Bedeutung bei einer Datei | Bedeutung bei einem Verzeichnis |
|---|---|---|---|
--- | 0 | Kein Zugriff | Kein Zugriff |
--x | 1 | Nur Ausführung | Nur Betreten |
-w- | 2 | Nur Schreiben | Inhalt ändern (mit x) |
-wx | 3 | Schreiben + Ausführung | Betreten und ändern |
r-- | 4 | Nur Lesen | Namen auflisten (erfordert x um nützlich zu sein) |
r-x | 5 | Lesen + Ausführung | Auflisten und betreten |
rw- | 6 | Lesen + Schreiben | Auflisten und ändern (ohne Betreten) |
rwx | 7 | Vollständiger Zugriff | Vollständige Kontrolle |
Praktische Berechtigungsbeispiele
Hier sind die häufigsten Berechtigungsmuster, denen Sie in der Praxis begegnen werden:
-rw-r--r-- (0644) — Standarddatei
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtDer Besitzer kann lesen und schreiben. Gruppe und andere können nur lesen. Typisch für Konfigurationsdateien und Webinhalte.
-rwxr-xr-x (0755) — Ausführbares Skript oder Binärdatei
-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.shDer Besitzer hat vollständigen Zugriff. Alle anderen können lesen und ausführen, aber nicht ändern. Standard für Shell-Skripte, Webserver-Binärdateien und öffentliche ausführbare Dateien.
-rw------- (0600) — Private Datei
-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsaNur der Besitzer kann lesen oder schreiben. Kein Zugriff für andere. Erforderlich für SSH-Privatschlüssel — SSH weigert sich, eine Schlüsseldatei mit breiteren Berechtigungen zu verwenden.
drwxr-xr-x (0755) — Standardöffentliches Verzeichnis
drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_htmlHäufig für Web-Root-Verzeichnisse. Der Besitzer hat vollständige Kontrolle; andere können durchsuchen und betreten.
drwx------ (0700) — Privates Verzeichnis
drwx------ 3 alice alice 4096 Aug 16 12:30 .sshVollständig privat. Nur der Besitzer kann zugreifen. Erforderlich für das ~/.ssh-Verzeichnis.
drwxrwxrwt (1777) — Weltweit beschreibbar mit Sticky Bit
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmpJeder kann Dateien erstellen, aber nur der Eig
