sudo
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Hinweis:
Im Wikiartikel mit Root-Rechten arbeiten werden alle Wege, die es außer sudo
gibt, um mit Root-Rechten zu arbeiten, aufgeführt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
⚓︎
Der Befehl sudo
kann Programmaufrufen vorangestellt werden. Er ermöglicht berechtigten Benutzern, das Programm im Namen und mit den Rechten eines anderen Benutzers auszuführen. Beispielsweise um Aufgaben auszuführen, die Administratoren vorbehalten sind:
Programme installieren (
sudo apt-get install ...
)Systemkonfigurationen ändern (
sudo nano /etc/fstab
)
Sudo fragt vor der Ausführung des Programms unter einem anderem Namen nach dem Passwort des aufrufenden Benutzers. Damit wird überprüft, ob dieser den Befehl selbst eingegeben hat. Der Kreis der berechtigten Benutzer ist in der Datei /etc/sudoers festgelegt. Standardmäßig wird als Ziel-Benutzer root
angenommen.
Achtung!
Erweiterte Rechte mittels der hier beschriebenen Verfahren bitte nur verwenden, wenn eine Aufgabe dies wirklich erfordert, die Programmausführung also zum Beispiel mit Root-Rechten erfolgen muss. Änderungen an Systemdateien sollte man mit Bedacht vornehmen und vorher eine Sicherungskopie anlegen. Eine falsche Verwendung von sudo kann das System unbrauchbar machen.
Unter Ubuntu wird in der /etc/sudoers standardmäßig allen Mitgliedern der Gruppe [2] sudo
erlaubt, zum Benutzer root zu werden und damit Rootrechte zu erhalten. Der oder die bei der Installation angelegten Benutzer gehört standardmäßig der Gruppe sudo
an. Näheres zur Konfigurationsdatei /etc/sudoers unter sudo/Konfiguration.
⚓︎ In Desktopumgebungen wie GNOME oder KDE werden für bestimmte Aufgaben teilweise automatisch Rootrechte für ein bestimmtes Programm angefordert. So wird man z.B. für eine Programminstallation automatisch nach seinem Passwort gefragt, damit APT Rootrechte erhält und das Programm installieren kann. Sudo braucht dann vielfach gar nicht mehr manuell aufgerufen zu werden.
Installation¶
sudo ist essentieller Bestandteil jeder Ubuntu-Installation und sollte auf gar keinen Fall entfernt werden. Es ist im Paket
sudo
enthalten.
root im Terminal¶
Sind für einen Terminal-Befehl Root-Rechte erforderlich, so reicht es, dem auszuführenden Befehl das Kommando sudo
voranzustellen. Nach der Eingabe wird man nach seinem Passwort gefragt. Dieses ist "blind" einzugeben. Es erscheinen keine Sternchen oder ähnliches auf dem Bildschirm, sondern einfach gar nichts (das kann aber geändert werden, siehe Visuelles Feedback). Beispiel:
Benutzer@Desktop:~$ sudo blkid [sudo] password for Benutzer: /dev/sda1: UUID="8688C7BE88C7AACF" LABEL="WinSystem" TYPE="ntfs" /dev/sda5: LABEL="DATEN" UUID="08A8-7B2C" TYPE="vfat" [...]
Nach dem Eingeben des Passworts ist dies für die nächsten 15 Minuten bei erneuter Verwendung von sudo
in diesem Terminal nicht mehr notwendig (kann ebenfalls angepasst werden, siehe Administrator auf Zeit). Die erneute Eingabe des Passwortes kann aber auch vorzeitig durch Angabe der Option -k
erzwungen werden. Beispiel:
Benutzer@Desktop:~$ sudo mkdir /media/test [sudo] password for Benutzer: #Passwort erforderlich Benutzer@Desktop:~$ sudo mkdir /media/test2 #Passwort nicht mehr erforderlich Benutzer@Desktop:~$ sudo rmdir /media/test2 #Passwort nicht mehr erforderlich Benutzer@Desktop:~$ sudo -k Benutzer@Desktop:~$ sudo rmdir /media/test [sudo] password for Benutzer: #Passwort erforderlich, selbst vor Ablauf der 15 Minuten
Diese Art der Verwendung bietet einige Vorteile: Rootrechte werden nur für die Dauer des jeweiligen Befehls angefordert. Bei mehreren Befehlen kann individuell festgelegt werden, welche davon mit erweiterten Rechten ablaufen.
Rootshell¶
Für größere administrative Aufgaben kann das ständige Voranstellen von sudo
auch hinderlich sein. Um länger als root
zu arbeiten - sprich mehrere Befehle hintereinander ausführen zu können, ohne immer wieder sudo
eingeben zu müssen - kann man in eine Rootshell wechseln. Nach der Eingabe [3] von
sudo -i
werden alle folgenden Befehle mit Rootrechten ausgeführt, bis man diese Rootshell mit
exit
verlässt. Innerhalb dieser Shell muss kein sudo
mehr verwendet werden. Die Dauer der Rootshell selbst ist nicht beschränkt. Es liegt in der Verantwortung des Anwenders, diese zu verlassen. Beispiel:
Benutzer@Desktop:~$ sudo -i [sudo] password for Benutzer: root@Desktop:~# mkdir /media/test root@Desktop:~# rmdir /media/test root@Desktop:~# exit Abgemeldet Benutzer@Desktop:~$
Den dauerhaften Wechsel kann man deutlich am veränderten Prompt "root@Desktop:~#
" erkennen. Abschließend signalisiert das normale Prompt das Ende der Rootshell.
Editieren von Dateien unter Rootrechten¶
Zum sicheren Editieren von Dateien wird statt sudo nano Datei
besser
sudoedit DATEI
verwendet. sudoedit
ist Teil des Pakets sudo und ist somit auch immer installiert.
Der gewünschte Editor kann vorher über die Umgebungsvariable EDITOR
festgelegt werden. Wird dadurch ein grafischer Editor festgelegt, ist zusätzlich der Home-Ordner des Zielnutzers zu setzen (siehe):
sudoedit -H DATEI
Programme im Kontext anderer Benutzer ausführen¶
Programme können auch unter dem Namen eines anderen 'regulären' Benutzers gestartet werden.
Terminalprogramme und Shellkommandos¶
Im Terminal kann ein Benutzerwechsel z.B. nützlich sein, um ein Skript in einer anderen Umgebung zu testen.
Terminal - Ausführung durch Benutzer mit Erlaubnis in /etc/sudoers¶
sudo
fragt immer nach dem Passwort des aufrufenden Benutzers. Ein Benutzerwechsel wird aber nur gestattet, wenn dies in /etc/sudoers erlaubt wurde. Dies ist standardmäßig nur für die Gruppe sudo
ohne Einschränkungen der Fall. Die Option -H
bewirkt, dass dann auch die Umgebungsvariabele $HOME auf das Home-Verzeichnis von BENUTZERNAME
mit umzieht, was beim Starten von grafische Programme wichtig ist.
sudo -H -u BENUTZERNAME PROGRAMM
Terminal - Ausführung mit Passwort des Zielbenutzers¶
Wenn das Passwort des Zielbenutzers bekannt ist, aber man z.B. nicht zur Gruppe sudo
gehört, kann der Befehl su
genutzt werden.
su BENUTZERNAME -c PROGRAMM
Für BENUTZERNAME
den Anmeldenamen des anderen Benutzers eingeben. Man beachte, dass bei diesem Befehl nach dem Passwort des anderen Benutzers gefragt wird.
Hinweis:
Rechteeinstellungen, die in der Datei /etc/sudoers vorgenommen wurden, haben bei su
keine Wirkung.
Zusammenfassung¶
Programme als anderer Benutzer ausführen | |||||
Bei | Befehl | Zweck | $HOME zeigt auf Verzeichnis von: | Kann standardmäßig benutzt werden: | |
Kommandozeilen-Befehl/Programm | sudo | führt einzelne Befehle als root aus | "/eigenes HOME" | von Gruppe sudo | |
sudo -H | führt Befehl mit angepasstem $HOME aus (empfohlen) | /root bzw. "/anderen Benutzer" | von Gruppe sudo | ||
sudo -u BENUTZER | führt Befehl als anderer BENUTZER aus | "/eigenes HOME" | von Gruppe sudo | ||
sudo -s | startet mittels Variable SHELL definierte Shell | "/eigenes HOME" | von Gruppe sudo | ||
sudo -i | startet interaktive shell | /root bzw. "/anderen Benutzer" | von Gruppe sudo | ||
su | wechselt aktuellen Benutzer mit Passwort des Zielbenutzers | /root bzw. "/anderen Benutzer" | bei Kenntnis des Passworts |
Links¶
Intern¶
Benutzer und Gruppen - Wichtige Informationen
Konfiguration von sudo - Weitere Einstellungen zur Benutzung des
sudo
-Befehls und damit verbundene Rechtegksudo und kdesudo - sudo mit grafischen Programmen nutzen, funktioniert nur bis einschließlich 17.10
PolicyKit - verfeinerte Rechteverwaltung, wird zukünftig mehr und mehr in die Desktopumgebung eingebaut
chown - Eigentümer und Gruppen von Dateien und Verzeichnissen ändern
chmod - Zugriffsrechte von Dateien und Verzeichnissen ändern
Extern¶
Ubuntu Wiki 🇬🇧 - Hinweise zu Sudo