Bentzer & Berechtigung

Benutzer und Gruppen

Linux ist ein Mehrbenutzersystem. Jeder Prozess und jede Datei gehört einem Benutzer und einer Gruppe. Das Berechtigungssystem stellt sicher dass Benutzer nur auf Ressourcen zugreifen können für die sie berechtigt sind.

Der root-Benutzer

root ist der Superuser in Linux – vergleichbar mit dem Administrator in Windows. root hat uneingeschränkten Zugriff auf das gesamte System und kann alle Befehle ausführen, alle Dateien lesen und schreiben und beliebige Prozesse beenden.

Da root so mächtig ist, sollte man sich im Alltag nicht als root anmelden. Stattdessen wird ein normaler Benutzer mit sudo-Rechten verwendet:

# Einzelnen Befehl als root ausführen
sudo apt update

# Root-Shell öffnen (Vorsicht!)
sudo -i

# Aktuellen Benutzer anzeigen
whoami

# UID anzeigen (root = 0)
id

UID und GID

Jeder Benutzer hat eine eindeutige UID (User ID) und jede Gruppe eine eindeutige GID (Group ID). Linux arbeitet intern mit diesen Nummern, nicht mit Namen:

  • UID 0: root

  • UID 1–999: Systembenutzer (Dienstkonten – z.B. www-data, nobody)

  • UID 1000+: Normale Benutzer

# Benutzerinformationen anzeigen
id username
# uid=1000(username) gid=1000(username) groups=1000(username),4(adm),27(sudo)

# Alle Benutzer anzeigen
cat /etc/passwd

# Einen Benutzer anlegen
sudo useradd -m -s /bin/bash -c "Max Mustermann" mmustermann

# Passwort setzen
sudo passwd mmustermann

# Benutzer löschen
sudo userdel -r mmustermann

Gruppen verwalten

# Gruppe anlegen
sudo groupadd it-abteilung

# Benutzer zu Gruppe hinzufügen
sudo usermod -aG it-abteilung mmustermann

# Gruppen des aktuellen Benutzers anzeigen
groups

# Alle Gruppen anzeigen
cat /etc/group

Wichtige Systemgruppen:

  • sudo / wheel: Mitglieder dürfen sudo verwenden

  • adm: Zugriff auf Logdateien

  • www-data: Webserver-Gruppe (nginx/apache)

  • docker: Zugriff auf Docker ohne sudo

Das Berechtigungssystem – rwx

Jede Datei hat drei Berechtigungsgruppen und drei Berechtigungstypen:

ls -la /etc/passwd
-rw-r--r-- 1 root root 2847 Mai  9 10:00 /etc/passwd
│││││││││
││││││││└── Andere (Others): r-- = nur lesen
│││││││└─── Gruppe (Group):  r-- = nur lesen
│││││││
││││└─────── Besitzer (User): rw- = lesen und schreiben
│││
│└─────────── Dateityp: - = normale Datei

Die drei Berechtigungstypen:

  • r (read = 4): Datei lesen / Verzeichnisinhalt anzeigen

  • w (write = 2): Datei schreiben / Dateien in Verzeichnis erstellen/löschen

  • x (execute = 1): Datei ausführen / Verzeichnis betreten

chmod – Berechtigungen ändern

chmod ändert die Berechtigungen einer Datei. Es gibt zwei Schreibweisen:

Symbolische Schreibweise

# Ausführen für Besitzer hinzufügen
chmod u+x skript.sh

# Schreiben für Gruppe entfernen
chmod g-w datei.txt

# Alle Rechte für Andere entfernen
chmod o-rwx datei.txt

# Mehrere gleichzeitig
chmod u+x,g+r,o-rwx datei.txt

Numerische (oktale) Schreibweise

Jede Berechtigungsgruppe wird als Summe der Werte dargestellt: r=4, w=2, x=1

# 755 = rwxr-xr-x (Besitzer: rwx=7, Gruppe: r-x=5, Andere: r-x=5)
chmod 755 skript.sh

# 644 = rw-r--r-- (typisch für Dateien)
chmod 644 datei.txt

# 600 = rw------- (nur Besitzer darf lesen/schreiben)
chmod 600 ~/.ssh/id_rsa

# 777 = rwxrwxrwx (alle dürfen alles – vermeiden!)
chmod 777 datei.txt

chown – Besitzer ändern

# Besitzer ändern
sudo chown www-data datei.html

# Besitzer und Gruppe ändern
sudo chown www-data:www-data /var/www/html

# Rekursiv (alle Dateien im Verzeichnis)
sudo chown -R username:username /home/username/

sudo – Privilegien erhöhen

sudo (superuser do) ermöglicht normalen Benutzern einzelne Befehle mit Root-Rechten auszuführen. Die Konfiguration erfolgt in /etc/sudoers (immer mit visudo bearbeiten!):

# sudoers-Einträge (Beispiele):

# Vollständige sudo-Rechte
username ALL=(ALL:ALL) ALL

# Nur bestimmte Befehle erlauben
helpdesk ALL=(ALL) /bin/systemctl restart apache2, /usr/bin/apt

# Ohne Passwortabfrage (Vorsicht!)
deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx

Spezielle Berechtigungen

Es gibt drei besondere Berechtigungsbits:

  • SUID (Set User ID, 4000): Programm läuft mit den Rechten des Dateibesitzers (nicht des aufrufenden Benutzers). Beispiel: /usr/bin/passwd muss /etc/shadow schreiben.

  • SGID (Set Group ID, 2000): Programm läuft mit der Gruppe des Dateibesitzers. Auf Verzeichnissen: neue Dateien erben die Gruppe.

  • Sticky Bit (1000): Auf Verzeichnissen: nur der Besitzer darf seine eigenen Dateien löschen. Typisch auf /tmp.

# SUID setzen
chmod u+s /usr/bin/programm
chmod 4755 /usr/bin/programm

# Sticky Bit auf /tmp
chmod +t /tmp
ls -la / | grep tmp
# drwxrwxrwt  9 root root  tmp

Zusammenfassung

  • root (UID 0) ist der Superuser – im Alltag sudo verwenden statt direkt als root arbeiten

  • UID 0: root, UID 1–999: Systembenutzer, UID 1000+: normale Benutzer

  • Berechtigungen: rwx für Besitzer (u), Gruppe (g) und Andere (o)

  • Numerisch: r=4, w=2, x=1 – 755 = rwxr-xr-x, 644 = rw-r--r--

  • chmod ändert Berechtigungen, chown ändert Besitzer/Gruppe

  • sudo ermöglicht Root-Rechte für einzelne Befehle – Konfiguration in /etc/sudoers

  • Spezielle Bits: SUID, SGID, Sticky Bit