linux-cli-shell cli file-management permissions security fundamentals

Rights Management: chmod & chown (Artikel 283)

Beherrschung der Dateiberechtigungen unter Linux. Erfahren Sie alles über das User-Group-Others Modell, oktale vs. symbolische Notation und den Einsatz von Special-Bits wie SUID und Sticky-Bit.

# Rights Management Mastery: Wer darf was?

TL;DR / Management Summary Berechtigungen sind das Immunsystem von Linux. Ein Fehler bei chmod (Berechtigungen) oder chown (Besitzverhältnisse) kann das System unbootbar machen oder Tür und Tor für Hacker öffnen. In diesem Modul lernen wir das UGO-Modell (User, Group, Others), beherrschen die oktale Schreibweise (755, 644) und verstehen die gefährlichen, aber nützlichen Special Bits wie SUID und das Sticky-Bit.


# 1. Einführung & Architektur

Das UGO-Modell.

Jede Datei hat drei Ebenen von Berechtigungen:

  1. U (User/Owner): Der Besitzer der Datei.
  2. G (Group): Die Gruppe, der die Datei gehört.
  3. O (Others): Alle anderen Benutzer im System.

# Die Berechtigungs-Matrix (Mermaid)

graph TD
    A[File / Directory] --> B[User rwx]
    A --> C[Group rwx]
    A --> D[Others rwx]
    B --> B1[4: Read]
    B --> B2[2: Write]
    B --> B3[1: Execute]
    subgraph "Special Bits"
        E[SUID: Execute as Owner]
        F[SGID: Inherit Group]
        G[Sticky Bit: Delete Protection]
    end

# 2. chmod: Berechtigungen ändern

Oktal vs. Symbolisch.

# Die oktale Methode (Schnell & Präzise)

  • 7 (4+2+1): Vollzugriff.
  • 6 (4+2): Lesen & Schreiben.
  • 5 (4+1): Lesen & Ausführen.
  • 4: Nur Lesen.
# Standard für Skripte (rwxr-xr-x)
chmod 755 script.sh

# Standard für Configs (rw-r--r--)
chmod 644 config.txt

# Die symbolische Methode (Flexibel)

# Füge Execute-Rechte für die Gruppe hinzu
chmod g+x binary

# Entziehe Schreibrechte für 'Others'
chmod o-w data.log

# 3. chown: Besitzverhältnisse regeln

Wer ist der Herr im Haus?

Nur Root kann den Besitzer einer Datei ändern.

# chown <user>:<group> <file>
sudo chown www-data:www-data /var/www/html/index.php

# Rekursiv für ganze Verzeichnisse
sudo chown -R admin:it-team /opt/mytool

# 4. Day-2 Operations: Special Bits

Fortgeschrittene Sicherheit.

# 1. Sticky Bit (Verzeichnisschutz)

Verhindert, dass Benutzer Dateien löschen, die ihnen nicht gehören (Standard für /tmp).

chmod +t /shared_folder

# 2. SUID (Set User ID)

Ein Programm läuft mit den Rechten des Besitzers (meist Root), egal wer es startet (Beispiel: passwd).

chmod u+s /usr/bin/special_tool

Gefahr: SUID-Bit auf eigenen Skripten ist ein massives Sicherheitsrisiko (Privilege Escalation)!


# 5. Troubleshooting & “War Stories”

Wenn die Rechte im Weg stehen.

# Story 1: “Der Webserver-Lockout”

Symptom: PHP-Skripte können keine Bilder in /uploads speichern, obwohl der Ordner 777 (unsauber!) hat. Ursache: Das übergeordnete Verzeichnis verbietet dem Webserver-User den Zugriff, oder SELinux blockiert (siehe Artikel 095). Lösung: Prüfen Sie die gesamte Pfad-Kette. Ein Verzeichnis braucht mindestens das x (Execute) Recht, damit ein User hineinwechseln kann.

# Story 2: “Das verschwundene S-Bit”

Symptom: Ein Admin kopiert ein Binary mit cp. Danach funktioniert das Programm nicht mehr korrekt (z.B. Zugriff auf Hardware scheitert). Ursache: Ein normaler cp Befehl kopiert keine Special-Bits (SUID/SGID) oder Metadaten. Lösung: Nutzen Sie cp -p (preserve) oder rsync -a, um Berechtigungen und Special-Bits exakt zu übernehmen.


# 6. Fazit & Empfehlung

  • Minimalismus: Vergeben Sie niemals mehr Rechte als nötig. Vermeiden Sie 777.
  • Wartung: Nutzen Sie find / -perm /4000 regelmäßig, um alle SUID-Programme im System zu finden und zu auditieren.
  • Wahl: Nutzen Sie die oktale Schreibweise in Skripten, da sie eindeutiger ist.

# Anhang: Cheatsheet

Aufgabe Befehl
Berechtigungen sehen ls -l
Alles für alle chmod 777 (Gefährlich!)
Nur Owner darf alles chmod 700
Nur lesen für alle chmod 444
SUID setzen chmod 4755
SGID setzen chmod 2755
Sticky Bit setzen chmod 1755
Besitzer ändern chown <user> <file>
Gruppe ändern chgrp <group> <file>
Default Rechte (Mask) umask 022