Wie man Dateiberechtigungen in Linux überprüft: Ein vollständiger Leitfaden
Linux betreibt die Mehrheit der Server der Welt — 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 hin 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 zulässig sind und von wem. Es gibt drei Kern-Berechtigungstypen:
| Berechtigung | Symbol | Was es bei einer Datei bewirkt | Was es bei einem Verzeichnis bewirkt |
|---|---|---|---|
| Lesen | r | Den Inhalt der Datei anzeigen | Die Namen von 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 (darin navigieren) |
Diese drei Berechtigungen werden unabhängig auf drei unterschiedliche Benutzerkategorien angewendet:
- Eigentümer (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 im System.
Diese Drei-mal-Drei-Matrix von Berechtigungen gibt Linux-Administratoren granulare, leistungsstarke Kontrolle über den Zugriff auf jede Ressource im System.
So überprüfen Sie Dateiberechtigungen: Der ls -l Befehl
Die schnellste und am häufigsten verwendete Methode zum Überprüfen von Dateiberechtigungen ist der ls -l Befehl (Langformat-Auflistung).
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)So teilt uns -rw-r--r-- mit:
- Eigentümer (
alice): Lesen + Schreiben (rw-) - Gruppe (
developers): Nur Lesen (r--) - Andere: Nur Lesen (
r--)
Überprüfung von Berechtigungen für mehrere Dateien
Um Berechtigungen für alle Dateien in einem Verzeichnis auf einmal anzuzeigen:
ls -la /var/www/htmlDas -a Flag schließt versteckte Dateien ein (solche, die mit einem Punkt beginnen). Dies ist besonders nützlich bei der Überprüfung von Webserver-Verzeichnissen in einer Shared Web Hosting oder VPS Umgebung.
Detaillierte Berechtigungsinformationen mit stat abrufen
Für eine umfassendere Aufschlüsselung – einschließlich symbolischer und numerischer Darstellungen – verwenden Sie den Befehl stat:
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 wichtigste Zeile ist:
Access: (0644/-rw-r--r--) Uid: ( 1000/ alice) Gid: ( 1000/developers)Dies gibt Ihnen:
- Numerische (oktale) Notation:
0644 - Symbolische Notation:
-rw-r--r-- - User ID (UID) und Group ID (GID) mit ihren lesbaren Namen
Der Befehl stat ist von unschätzbarem Wert bei der Behebung von Berechtigungsfehlern auf Produktionsservern, da er alle erforderlichen Informationen in einer einzigen Ausgabe bereitstellt.
Verständnis der numerischen (oktalen) Berechtigungsnotation
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 Addition der Werte:
| 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 (---)Überprüfung von Berechtigungen für Verzeichnisse
Verzeichnisse verwenden das gleiche Berechtigungsmodell, aber die Bedeutung jedes Bits ist leicht unterschiedlich. Verwenden Sie ls -ld (beachten Sie das -d Flag), um ein Verzeichnis selbst zu überprüfen, anstatt seinen Inhalt:
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:
- Eigentümer (
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 Execute-Bit (x) für ein 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.
Spezielle Berechtigungsbits: setuid, setgid und Sticky Bit
Über die standardmäßigen neun Berechtigungsbits hinaus unterstützt Linux drei spezielle Berechtigungsbits, die erweiterte Zugriffskontrolle bieten:
1. setuid (s auf dem Execute-Bit des Besitzers)
Wenn auf einer ausführbaren Datei gesetzt, wird das Programm mit den Privilegien des Dateieigentümers ausgeführt, nicht mit denen des aufrufenden Benutzers. So können Befehle wie passwd normalen Benutzern ermöglichen, /etc/shadow zu ändern (das root gehört).
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwdDas s in der Execute-Position des Besitzers zeigt setuid an.
2. setgid (s auf dem Execute-Bit der Gruppe)
Bei einer Datei wird das Programm mit den Privilegien 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 Execute-Bit der Anderen)
Wenn auf einem Verzeichnis gesetzt, können nur der Dateieigentümer (oder root) Dateien darin löschen oder umbenennen, auch 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 der speziellen Bits:
| Spezielles Bit | Numerischer Wert |
|---|---|
| setuid | 4000 |
| setgid | 2000 |
| Sticky bit | 1000 |
Also drwxrwxrwt = 1777 (1000 + 777).
Vollständige Berechtigungsreferenztabelle
| Symbolisch | Numerisch | Bedeutung für eine Datei | Bedeutung für ein Verzeichnis |
|---|---|---|---|
--- | 0 | Kein Zugriff | Kein Zugriff |
--x | 1 | Nur Ausführung | Nur Eintritt |
-w- | 2 | Nur Schreiben | Inhalte ändern (mit x) |
-wx | 3 | Schreiben + Ausführung | Eintritt und Änderung |
r-- | 4 | Nur Lesen | Namen auflisten (erfordert x um nützlich zu sein) |
r-x | 5 | Lesen + Ausführung | Auflisten und Eintritt |
rw- | 6 | Lesen + Schreiben | Auflisten und Änderung (ohne Eintritt) |
rwx | 7 | Vollständiger Zugriff | Vollständige Kontrolle |
Praktische Berechtigungsbeispiele
Hier sind die häufigsten Berechtigungsmuster, die Sie in der Praxis antreffen werden:
-rw-r--r-- (0644) — Standarddatei
-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txtBesitzer 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.shBesitzer 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 umfassenderen 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. 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 Besitzer jeder Datei kann seine eigenen Dateien löschen.
Praktische Tipps für Server-Umgebungen
Wenn Sie einen Linux-Server verwalten — ob es sich um einen VPS mit einer Webanwendung, einen mit einem SSL Certificate gesicherten Mail-Server oder eine Maschine mit mehreren über Domain Registration registrierten Domains handelt — hier sind einige wichtige Best Practices für Berechtigungen:
- Setzen Sie niemals 777 auf Dateien oder Verzeichnisse, es sei denn, Sie haben einen sehr spezifischen, vorübergehenden Grund. Weltweit beschreibbare Dateien sind ein großes Sicherheitsrisiko.
- Webserver-Dateien (z. B. unter
/var/www/) sollten typischerweise644für Dateien und755für Verzeichnisse sein, im Besitz Ihres Anwendungsbenutzers. - SSH-Schlüssel müssen
600für private Schlüssel und644für öffentliche Schlüssel sein. SSH erzwingt dies streng. - Konfigurationsdateien mit Passwörtern oder API-Schlüsseln sollten
600oder höchstens640sein. - Verwenden Sie
find, um Berechtigungen in einer Verzeichnisstruktur zu überprüfen:
# Find all world-writable files (potential security risk)
find /var/www -type f -perm -o+w
# Find all SUID files (for security auditing)
find / -type f -perm -4000 2>/dev/nullSchnellbefehlsreferenz
| Aufgabe | Befehl |
|---|---|
| Berechtigungen einer Datei auflisten | ls -l filename |
| Berechtigungen aller Dateien in einem Verzeichnis auflisten | ls -la /path/to/dir |
| Berechtigungen eines Verzeichnisses selbst überprüfen | ls -ld /path/to/dir |
| Vollständige Details einschließlich numerischer Berechtigungen abrufen | stat filename |
| Berechtigungen ändern (symbolisch) | chmod u+x filename |
| Berechtigungen ändern (numerisch) | chmod 755 filename |
| Dateieigentümer ändern | chown user:group filename |
| Berechtigungen rekursiv ändern | chmod -R 755 /path/to/dir |
| Weltweit beschreibbare Dateien finden | find . -perm -o+w -type f |
Fazit
Das Verständnis von Linux-Dateiberechtigungen ist nicht nur eine akademische Übung — es ist eine praktische, tägliche Fähigkeit für jeden, der Server verwaltet, Anwendungen bereitstellt oder in einer Linux-Umgebung arbeitet. Zusammengefasst die wichtigsten Erkenntnisse:
- Verwenden Sie
ls -lfür einen schnellen, benutzerfreundlichen Überblick über Berechtigungen für Dateien und Verzeichnisse. - Verwenden Sie
stat, wenn Sie sowohl symbolische als auch numerische Darstellungen zusammen mit Eigentümerdetails benötigen. - Beherrschen Sie beide Notationen — symbolisch (
rwx) und numerisch (755,644) — da verschiedene Tools und Dokumentationen beide austauschbar verwenden. - Denken Sie an den Verzeichnisunterschied: das Ausführungsbit (
x) in einem Verzeichnis bedeutet die Möglichkeit, es zu betreten, nicht es auszuführen. - Seien Sie sich spezieller Bits bewusst — setuid, setgid und das Sticky Bit — da sie häufig auf Produktionssystemen erscheinen und erhebliche Sicherheitsauswirkungen haben.
Eine ordnungsgemäße Berechtigungsverwaltung ist ein Eckpfeiler der Linux-Sicherheit. Egal, ob Sie ein persönliches Projekt auf VPS Hosting ausführen oder eine Flotte von Dedicated Servers verwalten, wenn Sie die Berechtigungen von Anfang an richtig einstellen, sparen Sie sich Sicherheitslücken, fehlerhafte Anwendungen und unzählige Stunden Fehlerbehebung in der Zukunft.
bei allen Hosting-Diensten