Mit dem Befehl sudo BEFEHL werden Befehle mit den Rechten eines anderen Benutzers (meist root) ausgeführt. Das ist praktisch, wenn du administrative Aufgaben erledigen musst, aber nicht dauerhaft als root angemeldet sein willst.
Der Name steht für “superuser do” – also “als Superuser ausführen”.
Grundlegende Verwendung
## Als root ausführen
sudo apt update
## Als anderer Benutzer ausführen
sudo -u benutzer BEFEHL
## Vorherigen Befehl mit sudo wiederholen
sudo !!
Bei der ersten Nutzung in einer Sitzung wirst du nach deinem eigenen Passwort gefragt. Das ist nicht das root-Passwort, sondern dein Benutzerpasswort.
Wer darf sudo nutzen?
Die Berechtigung wird in der Datei /etc/sudoers festgelegt. Diese Datei wird nicht direkt editiert, sondern mit dem Befehl visudo.
sudo visudo
Warum visudo?
- Syntaxprüfung - Prüft die Datei vor dem Speichern auf Fehler – sonst könnte sudo komplett ausfallen
- Sperrmechanismus - Verhindert, dass zwei Administratoren gleichzeitig die Datei ändern
- Editor-Auswahl - Öffnet standardmäßig nano oder vi (je nach System)
Typische Einträge in der sudoers-Datei
## Ein einzelner Benutzer darf alles
hoergen ALL=(ALL:ALL) ALL
## Eine Gruppe darf alles
%admin ALL=(ALL:ALL) ALL
## Benutzer darf nur bestimmte Befehle
hoergen ALL=(ALL) /usr/bin/systemctl restart nginx
## Ohne Passwortabfrage (vorsichtig verwenden!)
hoergen ALL=(ALL) NOPASSWD: /usr/bin/apt update
Aufbau eines Eintrags in sudoers
BENUTZER HOST=(BENUTZER:GRUPPE) BEFEHLE
| Feld | Bedeutung |
|---|---|
BENUTZER | Wer darf sudo nutzen? (oder %gruppe) |
HOST | Auf welchem Rechner? (ALL für alle) |
(BENUTZER:GRUPPE) | Als welcher Benutzer/Gruppe? (ALL für alle) |
BEFEHLE | Welche Befehle? (ALL für alle) |
Wichtige Parameter
| Option | Bedeutung |
|---|---|
-u benutzer | Als anderer Benutzer ausführen (default: root) |
-i | Als root einloggen (Login-Shell) |
-s | Shell als root starten |
-l | Eigene sudo-Berechtigungen anzeigen |
-k | Sudo-Cache zurücksetzen (Passwort neu abfragen) |
-v | Sudo-Zeit verlängern (ohne Befehl) |
Praktische Beispiele
## System aktualisieren
sudo apt update && sudo apt upgrade -y
## Datei bearbeiten, die root gehört
sudo nano /etc/hosts
## Als Benutzer "www-data" einen Befehl ausführen
sudo -u www-data php artisan cache:clear
## Dienst neu starten
sudo systemctl restart nginx
## Eigene Rechte anzeigen
sudo -l
Unterschied: sudo vs su
| Befehl | Bedeutung |
|---|---|
sudo BEFEHL | Führt einen Befehl mit root-Rechten aus (benötigt eigenes Passwort) |
su - | Wechselt dauerhaft zu root (benötigt root-Passwort) |
sudo -i | Wechselt zu root (benötigt eigenes Passwort) |
Vorteil von sudo:
- Kein root-Passwort nötig
- Genaue Kontrolle über erlaubte Befehle
- Jeder Befehl wird protokolliert
- Zeitlich begrenzte Rechte (Standard: 15 Minuten)
Sicherheitsaspekte
Protokollierung
Alle sudo-Befehle werden in /var/log/auth.log (Debian/Ubuntu) oder /var/log/secure (RHEL) protokolliert.
## Letzte sudo-Befehle anzeigen
sudo tail -f /var/log/auth.log | grep sudo
Best Practices
# NICHT machen – zu viel Rechte
hoergen ALL=(ALL:ALL) NOPASSWD: ALL
# BESSER – gezielt einschränken
hoergen ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
## NOCH BESSER – nur was wirklich nötig ist
hoergen ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade -y
Wichtige Sicherheitshinweise
- Niemals
NOPASSWD: ALLverwenden – das ist ein Sicherheitsrisiko. - Regelmäßig prüfen, wer sudo-Rechte hat:
sudo -l -U benutzer - Bei Fehlern:
visudoprüft die Syntax vor dem Speichern. - Standard-Sudo-Zeit (15 Minuten) kann mit
-kzurückgesetzt werden.
Häufige Fehler und Lösungen
## Fehler: "user is not in the sudoers file"
## Lösung: Benutzer zur Gruppe sudo hinzufügen
usermod -aG sudo benutzername
## Fehler: "command not found"
## Lösung: vollen Pfad angeben oder sudo mit PATH nutzen
sudo -E env "PATH=$PATH" befehl
## Fehler: "sorry, try again"
## Lösung: Passwort prüfen oder sudo-Cache zurücksetzen
sudo -k
Tipp für Fortgeschrittene
## Aliase in sudoers für bessere Übersicht
User_Alias ADMIN = hoergen, anna, sarah
Cmnd_Alias SYSTEM = /usr/bin/systemctl, /usr/bin/apt
ADMIN ALL=(ALL) SYSTEM
## Befehle ohne Passwort für bestimmte Aktionen
hoergen ALL=(ALL) NOPASSWD: /usr/bin/apt update
hoergen ALL=(ALL) /usr/bin/apt upgrade -y
Zusammenfassung
sudoerlaubt kontrollierte Ausführung mit root-Rechten.- Die Berechtigungen werden in
/etc/sudoersfestgelegt. visudoist der sichere Weg, diese Datei zu bearbeiten.- Immer so wenig Rechte wie möglich vergeben.
- Alle Aktionen werden protokolliert.