In Linux ist die Verwaltung von Berechtigungen entscheidend für die Sicherheit und den reibungslosen Betrieb des Systems. Jedes Dateisystemobjekt (Dateien, Verzeichnisse, Geräte etc.) hat Berechtigungen, die festlegen, welche Aktion von welchem Benutzer oder welcher Benutzergruppe durchgeführt werden kann.

Grundlegende Berechtigungstypen

In Linux gibt es drei grundlegende Arten von Berechtigungen:

  • 1. Lesen (r für read): Erlaubt das Lesen des Inhalts einer Datei oder das Auflisten des Inhalts eines Verzeichnisses.
  • 2. Schreiben (w für write): Erlaubt das Ändern des Inhalts einer Datei oder das Hinzufügen/Entfernen von Dateien in einem Verzeichnis.
  • 3. Ausführen (x für execute): Erlaubt das Ausführen einer Datei (z.B. eines Skripts oder Programms) oder den Zugriff auf ein Verzeichnis (z.B. das Betreten eines Verzeichnisses).

Benutzerklassen

Die Berechtigungen werden in drei Benutzerklassen festgelegt:

  • 1. Besitzer (user): Der Benutzer, dem die Datei gehört.
  • 2. Gruppe (group): Eine Gruppe von Benutzern, die gemeinsam Rechte an der Datei haben.
  • 3. Andere (others): Alle anderen Benutzer, die weder der Besitzer noch Mitglieder der Gruppe sind.

Darstellung von Berechtigungen

Die Berechtigungen in Linux werden in einem bestimmten Format angezeigt, wenn man den Befehl ls -l ausführt. Ein typisches Beispiel sieht folgendermaßen aus:

bash
-rwxr-xr--

Diese Darstellung wird wie folgt aufgeschlüsselt:

  • Erstes Zeichen: Zeigt den Dateityp an.
    • -: Normale Datei
    • d: Verzeichnis
    • l: Symbolischer Link
  • Die nächsten drei Zeichen (rwx): Berechtigungen für den Besitzer.
  • Die nächsten drei Zeichen (r-x): Berechtigungen für die Gruppe.
  • Die letzten drei Zeichen (r--): Berechtigungen für andere.

Berechtigungen setzen und ändern

Um Berechtigungen zu setzen oder zu ändern, verwendet man den Befehl chmod.

Symbolische Notation

Man kann Berechtigungen symbolisch setzen:

Beispiele
chmod u+x datei.txt

Fügt das Ausführungsrecht (x) für den Besitzer (u) hinzu.

chmod g-w datei.txt

Entfernt das Schreibrecht (w) für die Gruppe (g).

chmod o+r datei.txt

Fügt das Leserecht (r) für andere (o) hinzu.

Oktale Notation

Alternativ kann man die Berechtigungen mit einer Oktalzahl festlegen. Diese Zahl ist eine Kombination aus den folgenden Werten:

  • 4: Für Lesen (r)
  • 2: Für Schreiben (w)
  • 1: Für Ausführen (x)

Diese Zahlen werden für den Besitzer, die Gruppe und andere kombiniert:

bash
chmod 755 datei.txt

Das obige Beispiel bedeutet:

  • Besitzer: rwx (4 + 2 + 1 = 7)
  • Gruppe: r-x (4 + 0 + 1 = 5)
  • Andere: r-x (4 + 0 + 1 = 5)

Erweiterte Berechtigungen

Neben den Standardberechtigungen gibt es auch erweiterte Berechtigungen, wie das Setzen des SUID (Set User ID), SGID (Set Group ID) und Sticky-Bit.

SUID (s auf die Besitzerrechte)

Wenn bei einer ausführbaren Datei das SUID-Bit gesetzt ist, wird das Programm mit den Rechten des Dateibesitzers ausgeführt, nicht mit denen des ausführenden Besitzers. Dies ist wichtig für Programme, die bestimmte administrative Aufgaben ausführen müssen.

bash
chmod u+s programm

Das Beispiel setzt das SUID-Bit.

SGID (s auf die Gruppenrechte)

Wenn das SGID-Bit auf einem Verzeichnis gesetzt ist, werden alle neu erstellten Dateien in diesem Verzeichnis der gleichen Gruppe zugeordnet wie das Verzeichnis, nicht wie die Gruppe des Benutzers, der die Datei erstellt.

bash
chmod g+s verzeichnis

Das Beispiel setzt das SGID-Bit.

Sticky-Bit (t auf die Berechtigungen für andere)

Wenn das Sticky-Bit auf einem Verzeichnis gesetzt ist, können Dateien in diesem Verzeichnis nur vom Besitzer der Datei oder vom Root-Benutzer gelöscht oder umbenannt werden, selbst wenn andere Schreibrechte für das Verzeichnis haben.

bash
chmod +t /tmp

Das Beispiel setzt das Sticky-Bit auf das /tmp Verzeichnis, was oft als Sicherheitsmaßnahme verwendet wird.

Häufige Stolperfallen bei Berechtigungen

Oktale und symbolische Notation verwechseln.

chmod 755 und chmod u=rwx,go=rx bewirken dasselbe — aber die oktale Notation setzt die Rechte absolut, wahrend die symbolische relativ arbeitet. Ein chmod +x fugt Ausfuhrungsrechte hinzu, ohne bestehende Lese-/Schreibrechte anzutasten.

chmod 777 als Universallosung.

chmod 777 gibt jedem Benutzer volle Rechte — ein erhebliches Sicherheitsrisiko. Fur Verzeichnisse reicht meist 755, fur Dateien 644. Nur in absoluten Ausnahmefallen solltest du Welt-schreibbare Berechtigungen vergeben.

SUID- und SGID-Risiken unterschatzen.

Ein SUID-Programm lauft mit den Rechten des Dateibesitzers. Gehort die Datei root, kann ein Fehler im Programm zur Root-Kompromittierung fuhren. Prufe mit find / -perm -4000 regelmaßig, welche SUID-Programme auf deinem System existieren.

Sticky-Bit bei gemeinsam genutzten Verzeichnissen vergessen.

Ohne Sticky-Bit auf /tmp oder einem geteilten Projektverzeichnis konnte jeder Benutzer fremde Dateien loschen, auch wenn er sie nicht besitzt. Ein chmod +t verzeichnis verhindert das zuverlassig.

ls -l-Ausgabe nicht richtig lesen konnen.

Die Ausgabe -rwxr-xr-- ist keine Magie: Typ (1 Zeichen) + Besitzer (3) + Gruppe (3) + Andere (3). Wer das nicht sofort dekodieren kann, ubersieht schnell Fehlkonfigurationen bei Dateirechten.

Weiterfuhrende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Grundlagen

Zur Übersicht