Linux-Befehle · 8 min read · Dec 16, 2025

Ein Anfängerleitfaden zum Verständnis von sudo auf Ubuntu

Haben Sie jemals einen ‘Zugriff verweigert’-Fehler erhalten, während Sie an der Linux-Befehlszeile gearbeitet haben? Die Chancen stehen gut, dass Sie versucht haben, eine Operation auszuführen, die Root-Berechtigungen erfordert. Zum Beispiel zeigt der folgende Screenshot den Fehler, der auftritt, wenn ich versuche, eine Binärdatei in eines der Systemverzeichnisse zu kopieren:

Zugriff verweigert auf der Shell

Was ist also die Lösung für dieses Problem? Ganz einfach, verwenden Sie den sudo-Befehl.

Befehl mit sudo ausführen

Der Benutzer, der den Befehl ausführt, wird nach seinem Anmeldepasswort gefragt. Sobald das richtige Passwort eingegeben wurde, wird die Operation erfolgreich ausgeführt.

Während sudo zweifellos ein Muss-Befehl für jeden ist, der an der Befehlszeile in Linux arbeitet, gibt es mehrere andere verwandte (und tiefgehende) Details, die Sie wissen sollten, um den Befehl verantwortungsbewusster und effektiver zu nutzen. Und genau das werden wir hier in diesem Artikel besprechen.

Aber bevor wir weitermachen, ist es erwähnenswert, dass alle in diesem Artikel genannten Befehle und Anweisungen auf Ubuntu mit der Bash-Shell getestet wurden.

Was ist sudo?

Der sudo-Befehl, wie die meisten von Ihnen wahrscheinlich bereits wissen, wird verwendet, um einen Befehl mit erhöhten Rechten (normalerweise als Root) auszuführen. Ein Beispiel dafür haben wir bereits im obigen Einführungsteil besprochen. Wenn Sie möchten, können Sie sudo jedoch auch verwenden, um den Befehl als einen anderen (nicht-root) Benutzer auszuführen.

Dies wird durch die -u Befehlszeilenoption erreicht, die das Tool bereitstellt. Zum Beispiel habe ich im folgenden Beispiel (himanshu) versucht, eine Datei im Home-Verzeichnis eines anderen Benutzers (howtoforge) umzubenennen, erhielt jedoch einen ‘Zugriff verweigert’-Fehler. Und dann habe ich denselben ‘mv’-Befehl mit ‘sudo -u howtoforge’ versucht, der Befehl war erfolgreich:

Was ist sudo

Kann jeder Benutzer sudo verwenden?

Nein. Damit ein Benutzer sudo verwenden kann, sollte ein Eintrag, der diesem Benutzer entspricht, in der /etc/sudoers-Datei vorhanden sein. Der folgende Absatz - entnommen von Ubuntus Website - sollte es klarer machen:

Die /etc/sudoers-Datei steuert, wer welche Befehle als welche Benutzer auf welchen Maschinen ausführen kann und kann auch spezielle Dinge steuern, wie ob Sie für bestimmte Befehle ein Passwort benötigen. Die Datei besteht aus Aliasen (grundsätzlich Variablen) und Benutzerspezifikationen (die steuern, wer was ausführen kann).

Wenn Sie Ubuntu verwenden, ist es einfach sicherzustellen, dass ein Benutzer den sudo-Befehl ausführen kann: Alles, was Sie tun müssen, ist, dass dieser Benutzerkonto den Typ ‘Administrator’ hat. Dies kann erfolgen, indem Sie zu Systemeinstellungen… -> Benutzerkonten gehen.

sudo-Benutzer

Das Fenster entsperren:

Fenster entsperren

Dann den Benutzer auswählen, dessen Kontotyp Sie ändern möchten, und dann den Typ auf ‘Administrator’ ändern.

sudo-Konten auswählen

Wenn Sie jedoch nicht auf Ubuntu sind oder Ihre Distribution diese Funktion nicht bietet, können Sie die /etc/sudoers-Datei manuell bearbeiten, um die Änderung vorzunehmen. Sie müssen die folgende Zeile in dieser Datei hinzufügen:

[user]    ALL=(ALL:ALL) ALL

Es versteht sich von selbst, dass [user] durch den Benutzernamen des Kontos ersetzt werden sollte, dem Sie die sudo-Berechtigung gewähren. Ein wichtiger Punkt, der hier erwähnt werden sollte, ist, dass die offiziell empfohlene Methode zur Bearbeitung dieser Datei über den visudo-Befehl erfolgt - alles, was Sie tun müssen, ist, den folgenden Befehl auszuführen:

sudo visudo

Um Ihnen eine Vorstellung davon zu geben, warum das der Fall ist, hier ein Auszug aus dem visudo-Handbuch:

visudo bearbeitet die sudoers-Datei auf sichere Weise. visudo sperrt die sudoers-Datei gegen mehrere gleichzeitige Bearbeitungen, bietet grundlegende Plausibilitätsprüfungen und überprüft auf Syntaxfehler. Wenn die sudoers-Datei derzeit bearbeitet wird, erhalten Sie eine Nachricht, es später erneut zu versuchen.

Für weitere Informationen zu visudo, gehen Sie hierhin.

Was ist eine sudo-Sitzung?

Wenn Sie den sudo-Befehl häufig verwenden, bin ich mir sicher, dass Sie beobachtet haben, dass Sie, nachdem Sie das Passwort einmal erfolgreich eingegeben haben, mehrere sudo-Befehle ausführen können, ohne nach dem Passwort gefragt zu werden. Nach einer gewissen Zeit fragt der sudo-Befehl jedoch erneut nach Ihrem Passwort.

Dieses Verhalten hat nichts mit der Anzahl der sudo-gestützten Befehle zu tun, die Sie ausführen, sondern hängt von der Zeit ab. Ja, standardmäßig fragt sudo 15 Minuten lang nicht nach dem Passwort, nachdem der Benutzer es einmal eingegeben hat. Nach diesen 15 Minuten werden Sie erneut nach dem Passwort gefragt.

Wenn Sie möchten, können Sie dieses Verhalten jedoch ändern. Öffnen Sie dazu die /etc/sudoers-Datei mit dem folgenden Befehl:

sudo visudo

Und gehen Sie dann zu der Zeile, die lautet:

Defaults env_reset

env_reset

und fügen Sie die folgende Variable (fett hervorgehoben) am Ende der Zeile hinzu:

Defaults env_reset,timestamp_timeout=[neuer-wert]

Das [neuer-wert]-Feld sollte durch die Anzahl der Minuten ersetzt werden, die Sie möchten, dass Ihre sudo-Sitzung dauert. Zum Beispiel habe ich den Wert 40 verwendet.

sudo-Timeout-Wert

Falls Sie jedes Mal nach dem Passwort gefragt werden möchten, wenn Sie den sudo-Befehl verwenden, können Sie in diesem Fall den Wert ‘0’ dieser Variablen zuweisen. Und für diejenigen von Ihnen, die möchten, dass ihre sudo-Sitzung niemals abläuft, können Sie den Wert ‘-1’ zuweisen.

Bitte beachten Sie, dass die Verwendung von timestamp_timeout mit dem Wert ‘-1’ dringend abgeraten wird.

Das sudo-Passwort

Wie Sie vielleicht bemerkt haben, wird Ihnen immer dann, wenn sudo Sie nach einem Passwort fragt und Sie anfangen, es einzugeben, nichts angezeigt - nicht einmal ein Sternchen, was normalerweise der Fall ist. Während das im Allgemeinen kein großes Problem darstellt, möchten einige Benutzer aus welchen Gründen auch immer, dass die Sternchen angezeigt werden.

Das Gute ist, dass dies möglich und ziemlich einfach zu tun ist. Alles, was Sie tun müssen, ist, die folgende Zeile in der /etc/sudoers-Datei zu ändern:

Defaults        env_reset

zu

Defaults        env_reset,pwfeedback

Und speichern Sie die Datei.

Jetzt, wann immer Sie das sudo-Passwort eingeben, wird ein Sternchen angezeigt.

sudo-Passwort ausblenden

Einige wichtige Befehlszeilenoptionen für sudo

Neben der -u-Befehlszeilenoption (die wir bereits zu Beginn dieses Tutorials besprochen haben) gibt es einige andere wichtige Befehlszeilenoptionen für sudo, die einer Erwähnung wert sind. In diesem Abschnitt werden wir einige davon besprechen.

Die -k-Option

Betrachten Sie einen Fall, in dem Sie gerade einen sudo-gestützten Befehl ausgeführt haben, nachdem Sie Ihr Passwort eingegeben haben. Wie Sie bereits wissen, bleibt die sudo-Sitzung standardmäßig 15 Minuten aktiv. Angenommen, während dieser Sitzung müssen Sie jemandem Zugriff auf Ihr Terminal gewähren, möchten jedoch nicht, dass er sudo verwenden kann. Was werden Sie tun?

Glücklicherweise gibt es eine Befehlszeilenoption -k, die es Benutzern ermöglicht, die sudo-Berechtigung zu widerrufen. Hier ist, was die sudo-Man-Seite über diese Option zu sagen hat:

-k, --reset-timestamp  
Wenn ohne einen Befehl verwendet, macht es die zwischengespeicherten Anmeldeinformationen des Benutzers ungültig. Mit anderen Worten, beim nächsten Mal, wenn sudo ausgeführt wird, wird ein Passwort erforderlich sein. Diese Option erfordert kein Passwort und wurde hinzugefügt, um einem Benutzer zu ermöglichen, sudo-Berechtigungen aus einer .logout-Datei zu widerrufen.  
Wenn sie zusammen mit einem Befehl oder einer Option verwendet wird, die ein Passwort erfordern kann, bewirkt diese Option, dass sudo die zwischengespeicherten Anmeldeinformationen des Benutzers ignoriert. Infolgedessen wird sudo nach einem Passwort fragen (wenn eines von der Sicherheitsrichtlinie erforderlich ist) und die zwischengespeicherten Anmeldeinformationen des Benutzers nicht aktualisieren.

Die -s-Option

Es könnte Zeiten geben, in denen Ihre Arbeit erfordert, dass Sie eine Menge von Befehlen ausführen, die Root-Rechte benötigen, und Sie möchten nicht jedes Mal das sudo-Passwort eingeben. Außerdem möchten Sie nicht die Zeitüberschreitung der sudo-Sitzung ändern, indem Sie Änderungen an der /etc/sudoers-Datei vornehmen.

In diesem Fall möchten Sie möglicherweise die -s-Befehlszeilenoption des sudo-Befehls verwenden. Hier ist, wie die sudo-Man-Seite es erklärt:

-s, --shell  
Führen Sie die durch die SHELL-Umgebungsvariable angegebene Shell aus, wenn sie gesetzt ist, oder die Shell, die im Passwortdatenbankeintrag des aufrufenden Benutzers angegeben ist. Wenn ein Befehl angegeben ist, wird er über die -c-Option der Shell zur Ausführung an die Shell übergeben. Wenn kein Befehl angegeben ist, wird eine interaktive Shell ausgeführt.

Im Grunde genommen bewirkt diese Befehlszeilenoption:

  • Startet eine neue Shell - für welche Shell, wird die SHELL-Umgebungsvariable herangezogen. Falls $SHELL leer ist, wird die in der /etc/passwd-Datei definierte Shell verwendet.
  • Wenn Sie auch einen Befehlsnamen zusammen mit der -s-Option übergeben (zum Beispiel: sudo -s whoami), dann wird der tatsächlich ausgeführte Befehl: sudo /bin/bash -c whoami.
  • Wenn Sie keinen anderen Befehl ausführen möchten (d.h. Sie versuchen nur, sudo -s auszuführen), erhalten Sie eine interaktive Shell mit Root-Rechten.

Es ist wichtig zu beachten, dass die -s-Befehlszeilenoption Ihnen eine Shell mit Root-Rechten gibt, aber Sie nicht die Root-Umgebung erhalten - es ist Ihre .bashrc, die geladen wird. Das bedeutet, dass beispielsweise im neuen Shell, das sudo -s ausführt, der Befehl whoami weiterhin Ihren Benutzernamen zurückgibt und nicht ‘root’.

Die -i-Option

Die -i-Option ist ähnlich wie die -s-Option, die wir gerade besprochen haben. Es gibt jedoch einige Unterschiede. Einer der Hauptunterschiede ist, dass -i Ihnen auch die Root-Umgebung gibt, was bedeutet, dass Ihre (Benutzer-) .bashrc ignoriert wird. Es ist wie das Werden von Root, ohne sich explizit als Root anzumelden. Außerdem müssen Sie auch nicht das Passwort des Root-Benutzers eingeben.

*Wichtig: Bitte beachten Sie, dass es einen su-Befehl gibt, der es Ihnen ebenfalls ermöglicht, Benutzer zu wechseln (standardmäßig lässt er Sie Root werden). Dieser Befehl erfordert, dass Sie das ‘Root’-Passwort eingeben. Um dies zu vermeiden, können Sie ihn auch mit sudo ausführen (‘sudo su’); in diesem Fall müssen Sie nur Ihr Anmeldepasswort eingeben. Allerdings gibt es einige grundlegende Unterschiede zwischen ‘su’ und ‘sudo su’ - um sie zu verstehen und mehr darüber zu erfahren, wie ‘sudo -i’ sich von ihnen unterscheidet, gehen Sie hierhin.*

Fazit

Ich hoffe, dass Sie bis jetzt zumindest die grundlegende Idee hinter sudo verstanden haben und wie Sie sein Standardverhalten anpassen können. Probieren Sie die in diesem Artikel beschriebenen /etc/sudoers-Anpassungen aus und lesen Sie auch die Forumdiskussion (im letzten Absatz verlinkt), um mehr Einblick in den sudo-Befehl zu erhalten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.