ubuntuusers.de » Wiki » sudo

sudo

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

Um die Sicherheit auf Linux-Systemen zu erhöhen, sind administrative Aktionen nur mit den Rechten des Superusers möglich. Mittels des Befehls sudo kann man einen Befehl oder ein Programm mit administrativen Rechten starten und so das System betreffende Änderungen ausführen.

Allgemeines zur Sicherheit

Ein wichtiger Grund für die hohe Sicherheit von Linux-Systemen ist die strikte Einhaltung von Zugriffsrechten. Vergleichbar ist dies überhaupt nur mit den NT-basierten Systemen von Windows, also NT, 2000, XP und Vista. Die Windows 9.x Reihe hat keine (ausreichende) Rechteverwaltung. Allerdings nutzt Linux die gegebenen Möglichkeiten.

Root ist der Superuser unter Linux, vergleichbar mit dem Administrator unter Windows. Er darf quasi alles. Ihm "gehören" fast alle Dateien des Systems und er kann alle Dateien bearbeiten. Ähnliches gilt für den Admin-Account bei Windows-Systemen. Daher ist es sehr gefährlich, ständig mit Root-Rechten zu arbeiten.

Es gibt entscheidende Nachteile, wenn man als Administrator oder Root arbeitet, besonders dann, wenn der Rechner mit dem Internet verbunden ist. Gelingt es einem Angreifer, in das System einzudringen (eventuell mit einem Virus oder einem Fehler im Webbrowser), so besitzt er ebenfalls sofort Administratorrechte und kann tun, was immer er will.

Bei Linux-Systemen hingegen ist es sehr einfach, während des Betriebs nur kurzzeitig Root-Rechte zu erlangen. Hat man dann die Aufgabe erledigt, meldet man sich als root ab und ist wieder normaler Benutzer. Das macht das System sehr sicher. Denn sollte es einmal einem Angreifer gelingen, sich in das System einzuklinken, hat er nur normale Benutzerrechte, d.h. er darf ausschließlich die Dateien im Homeverzeichnis des Benutzers bearbeiten. Auf den Großteil des Computers, vor allem auf die sensiblen Bereiche, hat er keinerlei Zugriff.

Achtung!

Daher bitte niemals unter der grafischen Oberfläche als Benutzer root anmelden!

Root - der Standard bei Linux

Bei jedem Linux-System muss man, meist bei der Installation, einen Benutzer root und ein Passwort für diesen Benutzer angeben. Darüber hinaus können noch weitere Benutzer angelegt werden. Zum normalen Arbeiten verwendet man dann ein Benutzerkonto mit eingeschränkten Rechten. Will man nun im laufenden Betrieb eine Aktion durchführen, die Systemverwaltungs-Rechte erfordert, wird man von Linux zur Eingabe des Root-Passworts aufgefordert. Im Terminal kann man mit su (substitute user identity) und Root-Passwort zu root werden. Nach Beendigung der Aufgabe gibt man exit ein und ist wieder der normale Benutzer.

Diese Methode hat sich über einen langen Zeitraum bewährt, sie hat jedoch auch einige Nachteile:

  • Vergisst man, sich als root abzumelden, bleibt das System gefährdet

  • Man muss sich mindestens zwei (unterschiedliche) Passwörter merken

  • Sie verleitet zur ständigen Arbeit als root

  • Ohne zusätzliche Lösungen wie AppArmor kann man die Rechte, die ein Root-Benutzer hat, nicht einschränken

Sudo - Der Standard unter Ubuntu

Für Ubuntu Linux wählten die Entwickler einen anderen Ansatz. Hier existiert zwar ein Root-Account, er ist aber standardmäßig deaktiviert. Stattdessen kann der erste angemeldete Benutzer mit seinem Benutzerpasswort vorübergehend Root-Rechte erlangen. Im Terminal geschieht dies, indem er dem auszuführenden Befehl das Kommando sudo - sprich substitute user, do - voranstellt; bei graphischen Programmen, die Root-Rechte benötigen, sind die Menüeinträge entsprechend auf die Verwendung des graphischen gksudo bzw. kdesudo konfiguriert.

# Bei Befehlen in der Konsole:
sudo befehl --optionen
# Unter GNOME bzw. Xfce:
gksu befehl --optionen
# Unter KDE:
kdesudo befehl --optionen 

Achtung!

Graphische Programme sollten niemals mit sudo gestartet werden, sonst besteht die Gefahr, dass diese Programme anschließend nicht mehr korrekt funktionieren. Stattdessen immer gksudo in GNOME oder Xfce und kdesudo in KDE benutzen. (Hintergrund ist, dass sudo normalerweise nicht die Umgebungsvariable HOME verändert. Dadurch werden eventuell zugriffsbeschränkte Dateien im Homeverzeichnis des Nutzers erzeugt, die später von den Programmen nicht mehr verändert werden können, wenn diese ohne sudo laufen.)

Wird also unter Ubuntu nach einem Passwort gefragt, ist stets das eigene Benutzer-Passwort gemeint, mit dem man sich auch am System angemeldet hat. Dabei sieht man im Terminal bei der Eingabe aber keine Sternchen oder ähnliches; man muss "blind" tippen!

Natürlich darf nicht jeder Benutzer administrative Rechte mit sudo erlangen. Nach der Installation besitzt nur der während der Installation angelegte Benutzer diese Möglichkeit. Sollen weitere Benutzer per sudo Root-Rechte erlangen können, so müssen diese zur Gruppe "admin" hinzugefügt werden. Weitere Informationen hierzu findet man unter Benutzer und Gruppen bzw. Administrator.

Ein Nachteil dieses Verfahrens ist, dass man bei längerer Tätigkeit als root eventuell das Passwort mehrmals eingeben muss. Ein weiterer Nachteil ist, dass man nur ein Passwort herausbekommen muss, um Rootrechte zu erlangen. Außerdem verleitet es dazu, ein recht einfaches Passwort zu wählen. Ansonsten bietet dieser Ansatz aber einige Vorteile:

  • Es kann mehrere Superuser mit unterschiedlichen Rechten geben

  • Das Passwort bleibt 15 Minuten lang aktiv, danach wird es automatisch deaktiviert

  • Man muss sich meist nur ein Passwort merken

  • Es schult im Umgang mit root-Rechten, da man es (auf einer root-Shell) immer wieder eingeben muss

Um trotzdem länger als Root zu arbeiten, sprich mehrere Befehle hintereinander ausführen zu können, ohne immer wieder sudo und eventuell das Passwort eingeben zu müssen, sollte man sich eine "Fake"-Rootshell holen. Mit dem Befehl

sudo -s 

kann man solange Befehle mit root-Rechten ausführen, bis man diese Rootshell wieder mit

exit 

verlässt.

Experten-Info:

Anders als die Namen der Programme suggerieren mögen, nutzen die Programme gksu und kdesudo nicht standardmäßig su, sondern sudo. Bei gksu lässt sich dies durch den Parameter -w ändern. Bei KDE muss das Programm kdesu.distrib verwendet werden. Desweiteren ist zu beachten, dass bei kdesu[.distrib] für Root immer sudo verwendet wird. Ein echtes graphisches su gibt es fur Root unter KDE im Gegensatz zu "gksu -w" nicht.

Programm unter anderem, unprivilegiertem Benutzerkontext starten

Die Programme gksu (gleichbedeutend mit gksudo) und kdesudo wurden so ausgelegt, dass mit ihnen graphische Programme im Rootkontext ausgeführt werden können. Leider funktioniert dies nicht, wenn Anwendungen im Kontext anderer, unpriviligierter Nutzer ausgeführt werden sollen.

Wer ein graphisches Programm im Kontext eines anderen Benutzers (nicht root) ausführen möchte, der hat dazu folgende Möglichkeiten:

# Bei Befehlen in der Konsole:
su <UserName> -c <Befehl>
# Unter GNOME bzw. Xfce
gksu -w -u <Username> <Befehl>
# Unter KDE
kdesu.distrib -u <Username> <Befehl> 

Problembehebung

.ICEauthority kann nicht geschrieben werden (KDE)

Wenn man z.B. K3b mit "sudo k3b" startet, schreibt root in die Datei .ICEauthority des Home-Verzeichnisses. Hier eine Problemlösung für die Konsole:

cd
sudo chown <username> ./ICEauthority
sudo chmod 771 ./ICEauthority 

Danach ist man wieder Besitzer der Datei.

Sudo fragt nicht mehr nach dem Passwort

Oft liegt die Ursache darin, dass der User 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.

Hinweis:

Weitere Einstellungen zur Benutzung des sudo-Befehls und damit verbundene Rechte werden im Artikel zur Konfiguration von sudo beschrieben.


Diese Revision wurde am 2. August 2009 um 11:17 Uhr von martingr erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: su, Sicherheit, sudo, root, passwort, admin, Einsteiger, superuser

Passwort vergessen?