ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

sudo

Fehlende Vorlage

Das gewünschte Template „Wiki/Vorlagen/InArbeit“ existiert nicht.

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

http://imgs.xkcd.com/comics/sandwich.png
xkcd.com (CC-BY-NC)

Der Befehl sudo ermöglicht es, ein Programm im Namen und mit den Rechten eines anderen Benutzers auszuführen. In der Regel werden damit Programme gestartet, um Aufgaben auszuführen die dem Administrator des Systems vorbehalten sind. Beispiele:

Achtung!

Nur wenn Aufgaben dies erfordern erledigt man sie per sudo, also mit Rootrechten. Änderungen an Systemdateien sollte man nur vornehmen, wenn man weiß was man tut.

Bei den großen Desktopumgebungen GNOME oder KDE werden je nach Aufgabe nur einem bestimmten Programm Rootrechte gewährt. So muss man z.B. bei einer Programminstallation sein Passwort eingeben wodurch APT Rootrechte erhält und das Programm installieren kann.

⚓︎

Der Benutzer root

Unter Linux wird ein Konto für root angelegt. Root ist der Benutzer, der administrative Rechte besitzt und deshalb vollen Zugriff auf alle Dateien und damit auch auf alle Einstellungen hat. Bei Ubuntu-Linux wird dem Benutzer root allerdings kein Passwort zugewiesen, d.h. man kann sich am Loginprompt nicht mit dem Namen root anmelden.

⚓︎

Das HOME-Verzeichnis von root

Jeder reale Benutzer bekommt ein eigenes Homeverzeichnis im Verzeichnis /home mit seinem Namen. Für root gilt dies nicht, dessen home-Verzeichnis ist /root.

⚓︎

Der Befehl sudo

Jeder Benutzer, der der Gruppe[1] admin angehört, kann mit Hilfe des Befehls sudo vorübergehend Rootrechte erhalten und zum Benutzer root werden. Der bei der Installation angelegte Benutzer gehört immer dieser Gruppe an.

Hinweis:

Der Befehl sudo sollte nur für Terminalprogramme und Shellkommandos verwendet werden. Um grafische Programme mit Rootrechten zu starten sind eigene Programme vorgesehen. Siehe: Root bei grafischen Programmen

Die in der Hinweisbox gegebene Empfehlung soll zwei Probleme verhindern:

  1. Zum einen ändert sudo die Umgebungsvariable HOME standardmäßig nicht auf den entsprechenden Wert des Zielaccounts (siehe auch Zusammenfassung). Werden Programme mit sudo gestartet, besteht dadurch die Gefahr, dass Konfigurationsdateien mit falschen Rechten im Heimatverzeichnis des ursprünglichen Anwenders erstellt werden. Startet dieser das betreffende Programm dann später unter seinem eigenen Kontext - also ohne sudo - so kann es die Konfiguration entweder nur noch lesend oder eventuell gar nicht mehr öffnen. Daher wird empfohlen, sudo immer in Verbindung mit der Option -H zu verwenden. Bei Systembefehlen kann diese Option entfallen, sie schadet aber auch nicht. Die grafischen Alternativen leiden nicht unter diesem Problem: Dort wird die Umgebungsvariable HOME immer korrekt gesetzt.

  2. Zum anderen lassen sich nicht unter allen Desktopumgebungen grafische Programme direkt per "sudo -H" aus einem Terminal starten. Bei KDE beispielsweise liegt dies daran, dass die Umgebungsvariable XAUTHORITY nicht gesetzt ist, was bei Gnome aber der Fall ist. Da "sudo -H" also nicht unter allen Desktopumgebungen geeignet ist, grafische Anwendungen zu starten, sind zu diesem Zweck die Alternativen gksudo/kdesudo grundsätzlich zu bevorzugen.

root im Terminal

Sind bei einem Terminal-Befehl Rootrechte erforderlich so wird dem auszuführenden Befehl das Kommando sudo voranstellt. Nach der Eingabe wird man nach seinem Passwort gefragt. Dieses ist "blind" einzugeben, das heißt, es erscheinen keine Sternchen oder ähnliches auf dem Bildschirm, sondern einfach gar nichts. 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"
[...]

Nachdem das Passwort eingegeben wurde, ist dies für die nächsten 15 Minuten bei erneuter Verwendung von sudo in diesem Terminal nicht mehr notwendig. 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 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.

root bei grafischen Programmen

Möchte man grafische Programme (z.B. gedit oder Kate) als root ausführen, sind je nach Desktop eigene Befehle vorgesehen:

  • GNOME, Xfce: gksudo

  • KDE: kdesudo

Beispiel: Unter GNOME

gksudo gedit 

Unter KDE

kdesudo kate 

⚓︎

Programme im Kontext anderer Benutzer ausführen

Es ist möglich, ein Programm so zu starten, als sei es von einem anderen Benutzer gestartet worden. Wird ein Programm derart gestartet zeigt z.B. die Umgebungsvariable $HOME auf das Verzeichnis des anderen Benutzers.

⚓︎

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 administrativen Rechten

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 für die Gruppe admin ohne Einschränkungen der Fall.

sudo -H -u BENUTZERNAME PROGRAMM  

Terminal - Ausführung durch jeden

su BENUTZERNAME -c PROGRAMM 

Für BENUTZERNAME den Login-Namen 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 Auswirkungen.

Grafische Programme

Bei grafischen Programmen kann ein Benutzerwechsel hilfreich sein, um z.B. die Konfiguration von Programmen eines anderen Benutzers zu überprüfen.

⚓︎

Grafisch - Ausführung durch Benutzer mit administrativen Rechten

Dieser Befehl kann nur von einem Benutzer ausgeführt werden, der der Gruppe admin angehört.

Unter KDE:

kdesudo -u BENUTZERNAME PROGRAMM 

Unter GNOME gibt es zur Zeit keinen analogen Befehl. Mit gksudo ist es nur möglich zum Benutzer root zu wechseln, nicht zu einem anderen Benutzer. Siehe: Bugreport. Es muss also "gksu -w" (siehe Ausführung von jedem) verwendet werden, um zu regulären Benutzern zu wechseln.

⚓︎

Grafisch - Ausführung durch jeden

Bei diesen Befehlen muss der ausführende Benutzer nicht der Gruppe admin angehören. Für BENUTZERNAME ist jeweils der Login-Name des anderen Benutzers einzugeben.

Unter GNOME bzw. Xfce:

gksu -w -u BENUTZERNAME PROGRAMM 

Unter KDE:

/usr/lib/kde4/libexec/kdesu-distrib/kdesu -u BENUTZERNAME PROGRAMM  

Hinweis:

Bei diesen Befehlen haben Rechteeinstellungen, die in der Datei /etc/sudoers vorgenommen wurden, keine Auswirkungen und es werden immer die Passwörter des Zielbenutzers abgefragt. Dabei ist folgendes zu beachten: gksu muss mit der Option "-w" verwendet werden. Unter KDE muss der exakte Pfad angegeben werden. Wird hier einfach nur kdesu verwendet, so wird - wie bei gksu ohne Option "-w" - auf sudo zurückgegriffen, und damit die Einstellungen in der Datei /etc/sudoers durchgesetzt.

Zusammenfassung

Programme als anderer Benutzer ausführen
Umgebung Befehl Verwendung für: $HOME zeigt auf Verzeichnis von: Kann benutzt werden von:
Terminalprogramme sudo Einzelne Befehle ausführen "/eigenes HOME" admin
sudo -i Eine Rootshell starten /root admin
sudo -H Benutzerwechsel für admins /root bzw. "/anderen Benutzer" admin
su Benutzerwechsel für jedermann "/anderen Benutzer" admin/jedem
grafische Programme kdesudo und gksudo Einzelnes Programm starten /root admin
gksu -w -u GNOME/Xfce: Benutzerwechsel für jedermann "/anderen Benutzer" admin/jedem
/usr/[...]/kdesu -u KDE: Benutzerwechsel für jedermann "/anderen Benutzer" admin/jedem
kdesudo -u KDE: Benutzerwechsel für admins "/anderen Benutzer" admin

Problembehebung

Sudo fragt nicht mehr nach dem Passwort

Oft liegt die Ursache darin, dass der Benutzer entweder manuell oder unbeabsichtigt durch ein Skript in die Gruppe "sudo" eingetragen wurde und so die Passwortabfrage umgangen wird. Um sich wieder aus der Gruppe zu löschen, gibt man in die Konsole folgendes ein:

sudo deluser BENUTZERNAME sudo 

Für BENUTZERNAME den eigenen Login-Namen eingeben

Danach sollte die Passwortabfrage wieder funktionieren.

Artikel zu verwandten Themen

  • Benutzer und Gruppen - Wichtige Informationen

  • Konfiguration von sudo - Weitere Einstellungen zur Benutzung des sudo-Befehls und damit verbundene Rechte

  • 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


Diese Revision wurde am 12. August 2010 19:48 von kaputtnik erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Passwort, Einsteiger, sudoers