sudo — Befehle mit Root-Rechten ausführen

Praxis-Guide zu sudo: Befehle als root oder anderer Nutzer ausführen, Shells öffnen, Timestamp steuern und sudoers sicher per visudo konfigurieren.

sudo („superuser do") führt einzelne Befehle mit erhöhten Rechten aus – meist als root – ohne dass du dich dauerhaft als root anmeldest. Wer was darf, regelt die Datei /etc/sudoers, und jeder Aufruf landet im Log: Das macht sudo nachvollziehbar und damit deutlich sicherer als ein offenes root-Login per su. Dieser Guide zeigt dir die wichtigsten Aufrufe vom Alltagsbefehl bis zur Rechtevergabe. Eine Warnung vorweg: Regeln wie NOPASSWD: ALL machen ein Konto faktisch zu passwortlosem root – vergib Rechte sparsam und bearbeite sudoers ausschließlich mit visudo.

Grundlegende Verwendung

sudo <command> — Führt einen Befehl als root aus. Fragt nach dem Passwort des aktuellen Nutzers.

sudo apt update

sudo -u <user> <command> — Führt einen Befehl als bestimmter Nutzer statt als root aus.

sudo -u www-data php artisan migrate

sudo -g <group> <command> — Führt einen Befehl mit einer bestimmten primären Gruppe aus.

sudo -g docker docker ps

sudo !! — Führt den vorherigen Befehl erneut mit sudo aus (Bash-History-Expansion).

sudo !!

Shell & Umgebung

sudo -i — Startet eine Login-Shell als root. Lädt root's Umgebung (.profile, .bashrc usw.).

sudo -i

sudo -s — Startet eine Shell als root mit der Shell des aktuellen Nutzers. Lädt root's Umgebung nicht.

sudo -s

sudo su - — Wechselt mit voller Login-Shell zu root. Äquivalent zu „sudo -i".

sudo su -

sudo -E <command> — Behält die Umgebungsvariablen des aktuellen Nutzers beim Ausführen des Befehls bei.

sudo -E env | grep PATH

sudo env VAR=value <command> — Übergibt bestimmte Umgebungsvariablen an den als root ausgeführten Befehl.

sudo env RAILS_ENV=production rails s

Sitzungsverwaltung

sudo -v — Validiert (erneuert) den sudo-Timestamp, ohne einen Befehl auszuführen. Verlängert die Sitzung.

sudo -v

sudo -k — Macht den sudo-Timestamp sofort ungültig. Das nächste sudo verlangt wieder ein Passwort.

sudo -k

sudo -K — Entfernt den sudo-Timestamp vollständig (stärker als -k).

sudo -K

Rechte auflisten & prüfen

sudo -l — Listet die Befehle auf, die der aktuelle Nutzer per sudo ausführen darf.

sudo -l

sudo -l -U <user> — Listet die sudo-Rechte eines bestimmten Nutzers auf (erfordert root).

sudo -l -U deploy

sudo -n <command> — Nicht-interaktiver Modus. Führt den Befehl ohne Passwortabfrage aus. Schlägt fehl, wenn ein Passwort nötig ist.

sudo -n systemctl reload nginx

sudoers-Konfiguration

visudo — Bearbeitet /etc/sudoers sicher mit Syntaxprüfung. Immer visudo nutzen, niemals direkt editieren.

sudo visudo

visudo -f /etc/sudoers.d/<file> — Bearbeitet eine bestimmte Drop-in-sudoers-Datei. Bevorzugter Weg, um eigene Regeln hinzuzufügen.

sudo visudo -f /etc/sudoers.d/deploy

<user> ALL=(ALL:ALL) ALL — Gewährt einem Nutzer vollen sudo-Zugriff. Per visudo in sudoers einfügen.

jpk ALL=(ALL:ALL) ALL

<user> ALL=(ALL) NOPASSWD: ALL — Gewährt vollen sudo-Zugriff ohne Passwortabfrage. Mit Vorsicht einsetzen.

deploy ALL=(ALL) NOPASSWD: ALL

<user> ALL=(ALL) NOPASSWD: /bin/systemctl reload nginx — Erlaubt einen einzelnen Befehl ohne Passwort. Prinzip der minimalen Rechte.

deploy ALL=(ALL) NOPASSWD: /bin/systemctl reload nginx

%<group> ALL=(ALL:ALL) ALL — Gewährt allen Mitgliedern einer Gruppe vollen sudo-Zugriff. Das %-Präfix kennzeichnet eine Gruppe.

%sudo ALL=(ALL:ALL) ALL

Optionen & Schalter

sudo -H <command> — Setzt HOME auf das Home-Verzeichnis des Zielnutzers (standardmäßig root).

sudo -H pip install package

sudo -p '<prompt>' <command> — Verwendet eine eigene Passwort-Eingabeaufforderung.

sudo -p 'Enter your password: ' apt upgrade

sudo -- <command> — Beendet die Verarbeitung von sudo-Optionen. Nützlich, wenn der Befehl mit einem Bindestrich beginnt.

sudo -- -mycommand

sudo -b <command> — Führt den Befehl im Hintergrund aus.

sudo -b rsync -av /src/ /dst/

Fazit

sudo ist das Standardwerkzeug, um gezielt einzelne Aktionen mit Root-Rechten auszuführen, statt dauerhaft als root zu arbeiten – für den Alltag reichen meist sudo <befehl>, eine bei Bedarf geöffnete Root-Shell (sudo -i/-s) und der Blick auf die eigenen Rechte mit sudo -l. Drei Dinge solltest du verinnerlichen: Bearbeite sudoers immer mit visudo (oder visudo -f für Drop-ins unter /etc/sudoers.d/) – ein Syntaxfehler in /etc/sudoers kann sudo unbrauchbar machen und dich aus deinem eigenen System aussperren. Vergib Rechte nach dem Prinzip der minimalen Rechte: ein konkreter Befehlspfad statt ALL, denn NOPASSWD: ALL verwandelt ein Konto in passwortloses root und untergräbt den Schutz komplett. Und nutze den Vorteil gegenüber su: Jeder sudo-Aufruf ist auditierbar und landet im Log.

Verwandte Kommandos

  • su – zu einem anderen Nutzer wechseln, inklusive vollständigem root-Login
  • id – eigene oder fremde Nutzer-, Gruppen- und Rechte-IDs anzeigen
  • useradd – neue Benutzerkonten anlegen und konfigurieren