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.
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)
idJeder 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# 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/groupWichtige Systemgruppen:
sudo / wheel: Mitglieder dürfen sudo verwenden
adm: Zugriff auf Logdateien
www-data: Webserver-Gruppe (nginx/apache)
docker: Zugriff auf Docker ohne sudo
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 ändert die Berechtigungen einer Datei. Es gibt zwei Schreibweisen:
# 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.txtJede 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# 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 (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 nginxEs 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 tmproot (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