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
FeldBedeutung
BENUTZERWer darf sudo nutzen? (oder %gruppe)
HOSTAuf welchem Rechner? (ALL für alle)
(BENUTZER:GRUPPE)Als welcher Benutzer/Gruppe? (ALL für alle)
BEFEHLEWelche Befehle? (ALL für alle)

Wichtige Parameter

OptionBedeutung
-u benutzerAls anderer Benutzer ausführen (default: root)
-iAls root einloggen (Login-Shell)
-sShell als root starten
-lEigene sudo-Berechtigungen anzeigen
-kSudo-Cache zurücksetzen (Passwort neu abfragen)
-vSudo-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

BefehlBedeutung
sudo BEFEHLFührt einen Befehl mit root-Rechten aus (benötigt eigenes Passwort)
su -Wechselt dauerhaft zu root (benötigt root-Passwort)
sudo -iWechselt 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: ALL verwenden – das ist ein Sicherheitsrisiko.
  • Regelmäßig prüfen, wer sudo-Rechte hat: sudo -l -U benutzer
  • Bei Fehlern: visudo prüft die Syntax vor dem Speichern.
  • Standard-Sudo-Zeit (15 Minuten) kann mit -k zurü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

  • sudo erlaubt kontrollierte Ausführung mit root-Rechten.
  • Die Berechtigungen werden in /etc/sudoers festgelegt.
  • visudo ist der sichere Weg, diese Datei zu bearbeiten.
  • Immer so wenig Rechte wie möglich vergeben.
  • Alle Aktionen werden protokolliert.