# Berechtigungen - chmod

## 🔐 Rechteverwaltung unter Linux – chmod erklärt

Linux verwendet ein einfaches, aber mächtiges System zur Rechtevergabe für Dateien und Ordner. Mit dem Befehl `chmod` kannst du steuern, wer lesen, schreiben oder ausführen darf – mit Zahlen (z. B. `chmod 770`) oder Buchstaben (z. B. `chmod g+s`).

---

### 📁 Die 3 Ebenen der Dateiberechtigungen

- **Owner** – der Benutzer, dem die Datei gehört
- **Group** – die Gruppe, der die Datei zugewiesen ist
- **Others** – alle anderen Benutzer

Für jede dieser Ebenen kannst du Berechtigungen vergeben:

- `r` = read (lesen)
- `w` = write (schreiben)
- `x` = execute (ausführen, z. B. Skript starten oder in Ordner wechseln)

---

### 🔢 chmod mit Zahlen

Die häufigste Form ist die Zahlendarstellung, z. B. `chmod 755 datei`

Jede Ziffer steht für einen Teil der Berechtigung:

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-zahl-bin%C3%A4r-bedeutung"><thead><tr><th>Zahl</th><th>Binär</th><th>Bedeutung</th><th>Erlaubt</th></tr></thead><tbody><tr><td>0</td><td>000</td><td>---</td><td>keine Rechte</td></tr><tr><td>1</td><td>001</td><td>--x</td><td>nur ausführen</td></tr><tr><td>2</td><td>010</td><td>-w-</td><td>nur schreiben</td></tr><tr><td>3</td><td>011</td><td>-wx</td><td>schreiben + ausführen</td></tr><tr><td>4</td><td>100</td><td>r--</td><td>nur lesen</td></tr><tr><td>5</td><td>101</td><td>r-x</td><td>lesen + ausführen</td></tr><tr><td>6</td><td>110</td><td>rw-</td><td>lesen + schreiben</td></tr><tr><td>7</td><td>111</td><td>rwx</td><td>alles erlaubt</td></tr></tbody></table>

Beispiel:

```
chmod 750 meinskript.sh
# ergibt: rwxr-x--- (Owner: alles, Group: lesen + ausführen, Others: nichts)

```

---

### 🔤 chmod mit Buchstaben (symbolische Schreibweise)

Du kannst Berechtigungen auch gezielt setzen oder entfernen:

- `chmod u+x datei` → gib dem Owner das Recht, die Datei auszuführen
- `chmod g-w datei` → entziehe der Gruppe das Schreibrecht
- `chmod o=r datei` → setze für „Others“ nur Leserecht

Die Buchstaben stehen für:

- **u** = user (Owner)
- **g** = group
- **o** = others
- **a** = all

---

### ⚙️ Spezielle Modi: Setuid, Setgid, Sticky

<table border="1" cellpadding="5" cellspacing="0" id="bkmrk-bit-zahl-symbol-besc"><thead><tr><th>Bit</th><th>Zahl</th><th>Symbol</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Setuid</td><td>4</td><td>s</td><td>Prozesse starten mit den Rechten des Dateibesitzers</td></tr><tr><td>Setgid</td><td>2</td><td>s</td><td>Neue Dateien im Ordner erben die Gruppenzugehörigkeit</td></tr><tr><td>Sticky Bit</td><td>1</td><td>t</td><td>Nur der Besitzer darf Dateien löschen (z. B. in `/tmp`)</td></tr></tbody></table>

**Beispiel: Gruppenvererbung aktivieren**

```
chmod 2770 /gemeinsamer/ordner
# Ergebnis: rwxrws--- (Setgid aktiv → Gruppe wird vererbt!)

```

**Alternativ:**

```
chmod g+s /pfad

```

---

### 🧠 Beispiele aus der Praxis

```
# Nur Besitzer darf lesen + schreiben, Gruppe darf nur lesen:
chmod 640 datei.txt

# Alles für Besitzer und Gruppe, andere dürfen durch Verzeichnis springen:
chmod 2771 /mnt/shared

# Alle dürfen alles:
chmod 777 /mnt/offen

# Gruppe "admin" soll dauerhaft Zugriff behalten:
chown root:admin /mnt/projekt
chmod 2770 /mnt/projekt

```

---

### 🔍 Rechte prüfen mit ls -l

Mit `ls -l` siehst du die Rechte:

```
-rwxrws--- 1 root admin  ...   ← s = Setgid aktiv
drwxrwxrwt 2 root root   ...   ← t = Sticky Bit aktiv (z. B. /tmp)

```

---

### ✅ Zusammenfassung

- **Numerisch:** `chmod 755 datei`
- **Symbolisch:** `chmod g+s ordner`
- **Gruppenvererbung:** Setgid mit `chmod 2XXX`
- **Prüfen:** `ls -l` zeigt alle Rechte

Nutze Setgid für gemeinsame Team-Ordner, Sticky für geteilte Schreibbereiche und plane Rechte frühzeitig – spart dir später Ärger 😉