Sudo

Lesedauer: 9 Minuten

Das Sicherheitsprinzip der minimalen Rechte (Principle of Least Privilege) besagt, dass Benutzer und Prozesse nur über die Berechtigungen verfügen sollten, die sie zur Erfüllung ihrer Aufgaben tatsächlich benötigen. Unter Linux bedeutet dies insbesondere, administrative Tätigkeiten nicht dauerhaft mit dem privilegierten Benutzer root auszuführen.

Mit dem Kommando sudo (superuser do) können berechtigte Benutzer einzelne Befehle mit erhöhten Rechten ausführen, ohne sich unmittelbar als root anmelden zu müssen. Die administrativen Berechtigungen werden damit gezielt und nur bei Bedarf verwendet. Das reduziert das Risiko unbeabsichtigter Änderungen und erschwert den Missbrauch privilegierter Benutzerkonten.

Für die Systemadministration empfiehlt es sich, personenbezogene Benutzerkonten einzusetzen, anstatt ein gemeinsames Administratorkonto zu verwenden. sudo protokolliert standardmäßig die darüber aufgerufenen Befehle und den ausführenden Benutzer. Administrative Eingriffe lassen sich dadurch besser nachvollziehen und einzelnen Benutzerkonten zuordnen. Dies ist insbesondere für die Informationssicherheit und die Erfüllung von Compliance-Anforderungen von Bedeutung.

Installation

Bei minimalen Linux-Installationen, beispielsweise unter Debian, ist sudo möglicherweise noch nicht installiert. Die Installation erfolgt zunächst mit administrativen Rechten, beispielsweise nach einer Anmeldung als root:

# apt install sudo

Unter Debian erhalten Mitglieder der Gruppe sudo standardmäßig die Berechtigung, administrative Befehle auszuführen. Ein vorhandener Benutzer kann als root dieser Gruppe hinzugefügt werden:

# usermod -aG sudo pronto

Die neue Gruppenzugehörigkeit wird in der Regel erst nach einer erneuten Anmeldung wirksam. Anschließend kann der Benutzer administrative Befehle mit sudo ausführen.

sudoers-Datei

Die sudoers-Konfiguration

Welche Benutzer administrative Befehle ausführen dürfen und unter welchen Bedingungen dies geschieht, wird durch die sudoers-Konfiguration festgelegt.

Die zentrale Konfigurationsdatei befindet sich unter /etc/sudoers. Unter Debian enthält sie normalerweise bereits die folgende Regel:

%sudo ALL=(ALL:ALL) ALL

Das vorangestellte % kennzeichnet eine Benutzergruppe. Die Regel erlaubt allen Mitgliedern der Gruppe sudo, auf dem jeweiligen System Befehle als beliebiger Benutzer und mit beliebiger Zielgruppe auszuführen. Standardmäßig wird dabei das Passwort des aufrufenden Benutzers verlangt.

Zusätzliche Konfigurationen können über das Verzeichnis /etc/sudoers.d/ eingebunden werden. Dazu enthält die zentrale Datei üblicherweise folgende Direktive:

@includedir /etc/sudoers.d

Für individuelle Anpassungen empfiehlt es sich, separate Konfigurationsdateien in diesem Verzeichnis anzulegen. Die zentrale /etc/sudoers bleibt dadurch unverändert. Das erleichtert die Verwaltung und verhindert Konflikte mit Aktualisierungen der systemseitigen Konfiguration.

Benutzerspezifische Konfiguration: Timeout

Standardmäßig speichert sudo eine erfolgreiche Authentifizierung für einen begrenzten Zeitraum zwischen. Innerhalb dieser Zeit kann der Benutzer weitere administrative Befehle ausführen, ohne sein Passwort erneut eingeben zu müssen. Unter Debian beträgt dieser Zeitraum üblicherweise 15 Minuten.

Für interaktive Administrationsarbeiten kann es sinnvoll sein, die Authentifizierung stattdessen an das jeweilige Terminal zu binden und den zeitlichen Ablauf innerhalb dieser Terminalsitzung zu deaktivieren.

Damit muss sich ein Benutzer beim ersten administrativen Befehl authentifizieren. Weitere sudo-Aufrufe innerhalb desselben Terminals erfordern keine erneute Passworteingabe. Wird ein neues Terminal geöffnet, ist grundsätzlich eine neue Authentifizierung erforderlich.

Für den Benutzer pronto wird dazu eine eigene Konfigurationsdatei angelegt:

$ sudo visudo -f /etc/sudoers.d/pronto

Fügen Sie folgenden Inhalt ein:

# Administrative Rechte mit terminalbezogener Authentifizierung
Defaults:pronto timestamp_timeout=-1
Defaults:pronto timestamp_type=tty

pronto ALL=(ALL:ALL) PASSWD: ALL

Die beiden Defaults-Direktiven steuern das Verhalten der Authentifizierung.

Mit timestamp_timeout=-1 wird die zeitliche Begrenzung des Authentifizierungszeitstempels aufgehoben. Eine erneute Passworteingabe ist damit innerhalb derselben Terminalsitzung nicht erforderlich, solange der entsprechende Zeitstempel gültig bleibt.

Die Einstellung timestamp_type=tty bewirkt, dass sudo für jedes Terminal einen separaten Authentifizierungszeitstempel verwendet. Unter Debian ist dieses Verhalten normalerweise bereits voreingestellt. Die explizite Angabe macht die gewünschte Konfiguration jedoch unabhängig von abweichenden systemweiten Vorgaben nachvollziehbar. Ohne zugeordnetes Terminal orientiert sich sudo stattdessen an der übergeordneten Prozess-ID.

Die letzte Zeile erlaubt dem Benutzer pronto, administrative Befehle auszuführen, und verlangt hierfür grundsätzlich eine Passwortauthentifizierung. Gehört der Benutzer bereits der Gruppe sudo an, ist diese Berechtigung durch die Gruppenregel normalerweise schon vorhanden. Die zusätzliche Angabe dient hier der expliziten Dokumentation der Benutzerrechte.

Hinweis: Die Passwortanforderung kann durch weitere passende sudoers-Regeln beeinflusst werden. Insbesondere bei zusätzlichen NOPASSWD-Regeln ist deren Reihenfolge zu beachten.

Konfiguration überprüfen

Verwenden Sie für Änderungen an der sudoers-Konfiguration grundsätzlich visudo. Das Programm prüft die Syntax vor der Übernahme und hilft dadurch, fehlerhafte Konfigurationen zu vermeiden. visudo öffnet die Konfigurationsdatei im eingestellten Standardeditor.

Eine zusätzliche Prüfung sämtlicher eingebundener Konfigurationsdateien ist mit folgendem Kommando möglich:

$ sudo visudo -c

Zur Überprüfung der Authentifizierung kann der vorhandene Zeitstempel zunächst zurückgesetzt werden:

$ sudo -k

Anschließend führen Sie einen administrativen Befehl aus:

$ sudo id

Beim ersten Aufruf sollte eine Passwortabfrage erscheinen. Wiederholen Sie das Kommando, erfolgt die Ausführung ohne erneute Authentifizierung.

Öffnen Sie nun ein weiteres Terminal und führen Sie denselben Befehl aus. In diesem Terminal sollte sudo erneut nach dem Passwort fragen.

Mit sudo -k kann die zwischengespeicherte Authentifizierung des aktuellen Terminals jederzeit ungültig gemacht werden. sudo -K entfernt dagegen sämtliche gespeicherten Authentifizierungszeitstempel des Benutzers.

Sicherheitshinweis: Die zeitlich unbegrenzte Authentifizierung erhöht den Bedienkomfort, bedeutet aber auch, dass ein bereits authentifiziertes und unbeaufsichtigtes Terminal weiterhin für administrative Befehle verwendet werden kann. Die Einstellung sollte deshalb nur auf entsprechend abgesicherten Systemen eingesetzt werden.

Die Bindung erfolgt technisch an die Terminalsitzung und nicht unmittelbar an das grafische Terminalfenster. Moderne sudo-Versionen berücksichtigen zusätzliche Sitzungsmerkmale, um eine unbeabsichtigte Wiederverwendung von Authentifizierungszeitstempeln nach dem Abmelden zu verhindern.

Alternative: NOPASSWD

Für spezielle Anwendungsfälle, beispielsweise bestimmte automatisierte Abläufe, können Befehle auch ohne Passwortabfrage freigegeben werden. Dazu dient die Option NOPASSWD.

Eine entsprechende Regel könnte beispielsweise lauten:

pronto ALL=(ALL:ALL) NOPASSWD: ALL

Damit kann der Benutzer pronto sämtliche erlaubten administrativen Befehle ohne Passwort ausführen. Die Regel sollte deshalb nicht als allgemeine Standardeinstellung verwendet werden.

Für automatisierte Prozesse empfiehlt es sich, die Freigabe auf die tatsächlich erforderlichen Befehle zu beschränken, anstatt pauschal sämtliche administrativen Rechte ohne Authentifizierung bereitzustellen.

Protokollierung

sudo protokolliert standardmäßig die ausgeführten administrativen Befehle zusammen mit Informationen zum aufrufenden Benutzer, zum Arbeitsverzeichnis und zum verwendeten Terminal.

Auf Linux-Systemen mit systemd können diese Ereignisse über das Journal eingesehen werden:

$ journalctl _COMM=sudo
Mai 31 11:07:22 debian125 sudo[1263]:   pronto : TTY=pts/0 ; PWD=/home/pronto ; USER=root ; COMMAND=/usr/bin/apt update
Mai 31 11:07:22 debian125 sudo[1263]: pam_unix(sudo:session): session opened for user root(uid=0) by pronto(uid=1000)
Mai 31 11:07:23 debian125 sudo[1263]: pam_unix(sudo:session): session closed for user root
Mai 31 11:27:27 debian125 sudo[1547]:   pronto : TTY=pts/0 ; PWD=/home/pronto ; USER=root ; COMMAND=/usr/bin/ls -l /var/log/
Mai 31 11:27:27 debian125 sudo[1547]: pam_unix(sudo:session): session opened for user root(uid=0) by pronto(uid=1000)
Mai 31 11:27:27 debian125 sudo[1547]: pam_unix(sudo:session): session closed for user root

Aus den Einträgen lässt sich erkennen, welcher Benutzer den jeweiligen Befehl ausgeführt hat, unter welcher Benutzeridentität der Befehl gestartet wurde und von welchem Terminal der Aufruf erfolgte.

Die Protokollierung erfasst jedoch nicht automatisch sämtliche Aktivitäten innerhalb eines mit sudo gestarteten Programms. Wird beispielsweise eine interaktive Root-Shell mit sudo -i geöffnet, wird standardmäßig der Start dieser Shell protokolliert, nicht aber jeder anschließend darin eingegebene Befehl.

Für erhöhte Anforderungen an die Nachvollziehbarkeit unterstützt sudo zusätzliche Protokollierungsfunktionen, darunter die Aufzeichnung von Ein- und Ausgaben administrativer Sitzungen.

Befehlszeilenreferenz

Die folgende Übersicht fasst die wichtigsten sudo-Befehle und Optionen für die tägliche Linux-Administration zusammen. Die Beispiele beziehen sich auf Debian und vergleichbare Linux-Distributionen.

Grundlegende Befehle

BefehlBeschreibung
sudo <Befehl>Führt einen Befehl mit administrativen Rechten aus, standardmäßig als root.
sudo -u <Benutzer> <Befehl>Führt einen Befehl unter der Identität eines anderen Benutzers aus.
sudo -g <Gruppe> <Befehl>Führt einen Befehl mit einer bestimmten primären Gruppe aus.
sudo -iÖffnet eine Login-Shell als root, einschließlich der entsprechenden Anmeldeumgebung.
sudo -sÖffnet eine Shell mit erhöhten Rechten, ohne eine vollständige Login-Umgebung herzustellen.
sudo -H <Befehl>Setzt die Umgebungsvariable HOME auf das Home-Verzeichnis des Zielbenutzers.
sudo -E <Befehl>Versucht, die aktuelle Benutzerumgebung zu übernehmen, soweit die Sicherheitsrichtlinie dies erlaubt.
sudoedit <Datei>Bearbeitet eine geschützte Datei mit dem eigenen Editor, ohne diesen dauerhaft als root auszuführen.
sudo !!Wiederholt den vorherigen Shell-Befehl mit sudo (Bash-History-Expansion, kein eigener sudo-Befehl).

Authentifizierung und Berechtigungen

BefehlBeschreibung
sudo -vPrüft beziehungsweise erneuert die zwischengespeicherte Authentifizierung, ohne einen Befehl auszuführen.
sudo -kMacht den aktuellen Authentifizierungszeitstempel ungültig. Der nächste entsprechende sudo-Aufruf verlangt erneut eine Authentifizierung.
sudo -KEntfernt sämtliche gespeicherten Authentifizierungszeitstempel des aktuellen Benutzers.
sudo -n <Befehl>Führt einen Befehl ohne interaktive Passwortabfrage aus. Ist eine Authentifizierung erforderlich, schlägt der Aufruf fehl.
sudo -lZeigt die für den aktuellen Benutzer erlaubten und verbotenen Befehle sowie relevante sudoers-Einstellungen an.
sudo -llZeigt die Berechtigungen ausführlicher an.
sudo -l -U <Benutzer>Zeigt die Berechtigungen eines anderen Benutzers an, sofern der Aufrufer dazu berechtigt ist.
sudo -VZeigt Versionsinformationen von sudo und den verwendeten Plugins an.
sudo -hZeigt die Kommandozeilenhilfe an.

Konfiguration und Verwaltung

BefehlBeschreibung
sudo visudoÖffnet die zentrale sudoers-Konfiguration mit Syntaxprüfung.
sudo visudo -f /etc/sudoers.d/prontoBearbeitet die benutzerspezifische sudoers-Datei für pronto.
sudo visudo -cÜberprüft die Syntax der zentralen sudoers-Datei einschließlich eingebundener Dateien.
sudo visudo -c -f /etc/sudoers.d/prontoPrüft gezielt die angegebene Konfigurationsdatei.
sudo cat /etc/sudoersZeigt die zentrale Konfiguration an.
sudo ls -l /etc/sudoers.d/Listet die zusätzlichen Konfigurationsdateien und ihre Dateiberechtigungen auf.
sudo -l -U prontoPrüft die für pronto wirksamen Berechtigungen, sofern der Aufrufer dazu berechtigt ist.

Praktische Anwendungsbeispiele

BefehlBeschreibung
sudo apt updateAktualisiert die Paketlisten.
sudo apt upgradeInstalliert verfügbare Paketaktualisierungen.
sudo systemctl restart apache2Startet den Apache-Webserver neu.
sudo systemctl status sshZeigt den Status des SSH-Dienstes an.
sudo journalctl -u sshZeigt die Journal-Einträge des SSH-Dienstes an.
sudo journalctl _COMM=sudoZeigt sudo-Protokolleinträge aus dem systemd-Journal an, soweit sie verfügbar sind.
sudo -u www-data idFührt id unter dem Benutzerkonto www-data aus.
sudoedit /etc/hostsBearbeitet die Hosts-Datei mit einem unprivilegierten Editor und privilegiertem Schreibvorgang.
sudo idZeigt die Benutzer- und Gruppenidentität an, unter der der Befehl ausgeführt wird.

Hinweis: Nicht jeder aufgeführte Befehl benötigt auf allen Systemen tatsächlich administrative Rechte. Einige Beispiele dienen lediglich der Veranschaulichung der Verwendung von sudo. Die Ausführung setzt außerdem voraus, dass der Benutzer die entsprechenden Berechtigungen besitzt.

Weiterführende Dokumentation

Die vollständige Dokumentation kann direkt im Terminal mit den folgenden Befehlen aufgerufen werden:

BefehlBeschreibung
man sudoDokumentation zu sudo und seinen Kommandozeilenoptionen.
man sudoersAufbau und Syntax der sudoers-Konfiguration.
man visudoBearbeitung und Prüfung der sudoers-Dateien.
man sudoers_timestampTechnische Hintergründe der zwischengespeicherten Authentifizierung.

Loading

Updated on 8. November 2026
Was this article helpful?

Related Articles