Der Befehl sudo führt Programme mit den Rechten eines anderen Benutzers aus – standardmäßig als Root. Statt dich als Root anzumelden, gewährst du mit sudo gezielt administrative Rechte für einzelne Befehle. Das ist sicherer, weil kein Root-Passwort weitergegeben werden muss.
Syntax
sudo [OPTIONEN] BEFEHL
OPTIONEN– Steuern das Verhalten von sudo.BEFEHL– Der Befehl, der mit erhöhten Rechten ausgeführt wird.
sudo installieren
Auf den meisten Distributionen ist sudo bereits installiert. Prüfe das mit:
sudo --version
Falls die Meldung sudo: command not found erscheint, installiere das Paket über deinen Paketmanager.
Ubuntu und Debian:
apt install sudo
CentOS und Fedora:
yum install sudo
Benutzer zur sudo-Gruppe hinzufügen
Mitglieder der sudo-Gruppe können jeden Befehl als Root ausführen. Der Gruppenname unterscheidet sich je nach Distribution.
Debian, Ubuntu und Derivate – Gruppe sudo:
usermod -aG sudo benutzername
CentOS, Fedora und RedHat – Gruppe wheel:
usermod -aG wheel benutzername
Bei Ubuntu ist das Root-Konto standardmäßig deaktiviert. Der bei der Installation angelegte Benutzer gehört automatisch zur sudo-Gruppe.
sudo verwenden
Stelle sudo vor den Befehl, den du mit Root-Rechten ausführen willst:
sudo ls /root
Beim ersten Aufruf in einer Sitzung fragt sudo nach deinem Benutzerpasswort – nicht nach dem Root-Passwort. Nach erfolgreicher Eingabe wird der Befehl ausgeführt:
[sudo] Passwort für kommandozeile:
.bashrc .cache .config .local .profile
Passwort-Timeout anpassen
Nach fünf Minuten Inaktivität fordert sudo das Passwort erneut an. Diesen Timeout änderst du in der sudoers-Datei.
Öffne die Datei mit visudo – dieser Befehl prüft die Syntax vor dem Speichern:
sudo visudo
Füge diese Zeile hinzu, um den Timeout auf 10 Minuten zu setzen:
Defaults timestamp_timeout=10
Für einen bestimmten Benutzer:
Defaults:benutzername timestamp_timeout=10
Befehle als anderer Benutzer ausführen
Mit der Option -u führst du einen Befehl als beliebiger Benutzer aus – nicht nur als Root:
sudo -u richard whoami
Die Ausgabe zeigt den Benutzer, unter dem der Befehl läuft:
richard
Einzelne Befehle für Benutzer freigeben
Statt einen Benutzer zur sudo-Gruppe hinzuzufügen, kannst du gezielt einzelne Befehle erlauben. Öffne die sudoers-Datei:
sudo visudo
Füge eine Zeile mit dem Benutzernamen und dem erlaubten Befehl hinzu:
kommandozeile ALL=/bin/mkdir
Der Benutzer kommandozeile darf jetzt nur mkdir mit sudo ausführen.
Um einem Benutzer alle Befehle ohne Passwortabfrage zu erlauben:
kommandozeile ALL=(ALL) NOPASSWD: ALL
Hinweis: Verwende NOPASSWD nur, wenn du die Sicherheitsauswirkungen verstehst.
Ausgaben in geschützte Dateien umleiten
Die Umleitung mit > funktioniert nicht direkt mit sudo:
sudo echo "test" > /root/datei.txt
bash: /root/datei.txt: Keine Berechtigung
Die Umleitung wird von der Shell ausgeführt – noch bevor sudo greift. Es gibt zwei Lösungen:
Lösung 1: Eine neue Shell mit Root-Rechten starten:
sudo sh -c 'echo "test" > /root/datei.txt'
Lösung 2: Mit tee schreiben:
echo "test" | sudo tee /root/datei.txt
Bei tee wird die Ausgabe auch auf dem Terminal angezeigt. Mit tee -a hängst du Text an eine bestehende Datei an.
Zusammenfassung
| Aufgabe | Befehl |
|---|---|
| Befehl als Root ausführen | sudo befehl |
| Befehl als anderer Benutzer | sudo -u benutzer befehl |
| Benutzer zur sudo-Gruppe hinzufügen | usermod -aG sudo benutzer |
| sudoers-Datei bearbeiten | sudo visudo |
| Passwort-Timeout ändern | Defaults timestamp_timeout=10 |
Mit sudo führst du administrative Aufgaben sicher aus, ohne dauerhaft als Root angemeldet zu sein. Die sudoers-Datei gibt dir feine Kontrolle darüber, welche Benutzer welche Befehle ausführen dürfen.