Darf ich? Was ist eigentlich sudo?

Zu Befehl

01.05.2002
Die tägliche Arbeit unter Linux wird aus Sicherheitsgründen nicht mit Root-Rechten, sondern unter einem normalen Account durchgeführt. Wer nicht für jede administrative Aufgabe mit su in den Superuser-Modus wechseln will, findet mit sudo Hilfe.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen - wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Der Name sudo kommt aus dem Englischen: "superuser do". Mit diesem Programm geben Administratoren einzelnen Benutzern oder Gruppen für bestimmte Befehle root-Rechte, ohne das Passwort des Root-Accounts verraten zu müssen. Um ein Mindestmaß an Kontrolle zu behalten, werden alle sudo-Aktionen mitgeloggt. Das Programm benutzt Timestamps, um eine Art "Ticket"-System zu implementieren: Ruft ein User sudo auf und gibt sein eigenes Passwort ein, erhält er ein Ticket für wenige Minuten (dieser Timeout variiert bei den verschiedenen Distributionen und kann natürlich konfiguriert werden). Eine solche Begrenzung verhindert, dass eine verlassene root-Shell auf der Konsole Tür und Tor für Unbefugte öffnet.

In der Datei /etc/sudoers wird konfiguriert, welcher Anwender welche Rechte auf dem System erhält. Diese Datei sieht in der Urfassung so aus:

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL) ALL

Um diese zu verändern (im Header steht es bereits), verwenden Sie das Kommando visudo. Dieses Programm ist eine Variante des Editors vi, bietet aber ein paar zusätzliche Features. Es "sperrt" die Datei, so dass sie nicht von zwei Benutzern gleichzeitig editieren werden kann. Außerdem überprüft es die Syntax beim Beenden des Editors: Sollten Sie einen fehlerhaften Eintrag gemacht haben, z. B. bei der Groß- und Kleinschreibung von bestimmten Kommandos, erhalten Sie eine Warnung:

wrote /etc/sudoers.tmp, 17 lines, 288 chars
>>> sudoers file: syntax error, line 8 <<<
What now?

Nach diesem Hinweis haben Sie drei Möglichkeiten: 1. Sie editieren die Datei erneut (Taste e und [Enter] drücken), 2. Sie beenden das Programm, ohne die Änderungen an /etc/sudoers zu speichern, (Taste x und [Enter] drücken) oder 3. Sie beenden das Programm und speichern auch die (vielleicht fehlerhaften) Änderungen (Taste q und [Enter]).

Zurück zur Konfiguration der Datei /etc/sudoers: In der Sektion Host alias specification definieren Sie - wie der Name schon verrät - Rechner, für die bestimmte sudo-Aufrufe gelten sollen. Dazu kann ein Host_Alias vergeben werden, der eine Gruppe von Computern wahlweise durch Aufführung ihrer Namen oder durch Definition bestimmter IP-Netzbereiche unter einem Namen abbildet. Das vereinfacht die Definitionen gültiger Kommandos für eben diese Rechner und ist natürlich nur sinnvoll, wenn die Konfigurationsdatei auf mehreren Rechnern verwendet wird.

Mit dem User_Alias räumen Sie durch einen Alias mehreren Usern bestimmte Rechte ein. Um den Befehl shutdown beispielsweise für die Benutzer petronella, easter und egbert freizugeben, können Sie diese zu einer Gruppe unter einem Alias zusammenfassen:

# User alias specification
User_alias ABSCHALTER = petronella,easter,egbert

Hier sehen Sie, wie die Einträge aufgebaut sind: Sie beginnen mit dem Alias-Typ (z. B. User_Alias), es folgt eine Zeichenkette für den Alias-Namen (dieser darf aus Großbuchstaben, Zahlen und dem Unterstrich "_" bestehen und muss mit einem Großbuchstaben beginnen), und zum Schluss werden Benutzernamen getrennt durch Kommata aufgelistet. Es ist möglich, mehrere Alias-Definitionen desselben Typs in einer Zeile zusammenzufassen. Diese müssen dann durch einen Doppelpunkt getrennt werden, also z. B.

User_alias ABSCHALTER = petronella,easter,egbert : INTERNET_AN = petronella,easter

Unter der Cmnd alias specification können Sie nun bestimmten Kommandos einen Alias zuweisen, z. B. Cmnd_Alias DOWN = /sbin/shutdown. Um den Benutzern petronella, easter und egbert also zu erlauben, mit dem Kommando shutdown den Computer herunterzufahren, sollte die fertige /etc/sudoers so aussehen:

# Host alias specification
# User alias specification
User_Alias ABSCHALTER=petronella,easter,egbert
# Cmnd alias specification
Cmnd_Alias DOWN = /sbin/shutdown
# User privilege specification
root    ALL=(ALL) ALL
ABSCHALTER ALL=DOWN

Ein Benutzer aus der vorher definierten Liste ABSCHALTER kann das Kommando shutdown nun mit dem Befehl sudo /sbin/shutdown aufrufen. Das einzugebende Passwort ist das auf dem Computer gültige Login-Passwort. Möchte man die Passworteingabe unterdrücken, kann ein Flag NOPASSWD gesetzt werden (ABSCHALTER ALL=NOPASSWD:DOWN) - überlegen Sie aber gut, welchem User Sie diese Rechte geben.

Do the sudo!

Es muss nicht zwingend mit Aliasen gearbeitet werden, um einem einzelnen User ein bestimmtes Kommando zur Verfügung zu stellen. Praktisch ist auch, dass Sie einem bestimmten Benutzer aus einer vorher definierten Gruppe einzeln einen Befehl wieder "wegnehmen" können. Dazu fügen Sie nach ABSCHALTER ALL=DOWN eine weitere Zeile mit dieser Ausnahme ein, z. B. petronella ALL=!DOWN. Wichtig ist, dass die Zeile unmittelbar nach der anderen Regel erscheint, da die Datei von oben nach unten abgearbeitet wird. Auf diese Weise kann die Gruppe ABSCHALTER weiter existieren und für andere Kommandos verwendet werden - nur für diesen einen Fall darf der User petronella hier nicht mitmachen. Sobald dieser Benutzer versucht, das Kommando auszuführen, erhält er die Fehlermeldung: Sorry, user petronella is not allowed to execute '/sbin/shutdown' as root on asteroid.

Sicherheit wird ganz groß geschrieben: Der Versuch des Benutzers petronella, ein Kommando mit sudo aufzurufen, für das keine Erlaubnis existiert, wird (sofern nicht anders in der /etc/sudoers definiert) an den Superuser root als Mail verschickt (siehe Abbildung 1) und dem Benutzer selbst auch durch die Meldung "petronella is not in the sudoers file. This incident will be reported." mitgeteilt. Damit ein Benutzer aber auch weiß, was er darf, kann er sudo -l (für englisch "list") aufrufen - hier verrät das Programm, welche Kommandos erlaubt oder verboten sind.

Abbildung 1: Mail an root

Das Programm hat noch weitere nützliche Parameter. Mit der Option -v (für englisch "validate") verlängern Sie Ihr "Ticket" um weitere Minuten (Standard ist bei den meisten Distributionen 15 Minuten). Möchten Sie Ihr Ticket einfach löschen, wählen Sie entweder sudo -k (für "kill") oder sudo -K ("sure kill"). Um als Administrator diesen Timeout zu verändern, können Sie in der /etc/sudoers einen Eintrag vornehmen:

Defaults timestamp_timeout = 0

Bei den hier gewählten 0 Minuten muss also jetzt bei jedem sudo-Aufruf ein Passwort eingegeben werden. Auch das Logfile, in das geschrieben wird, sobald jemand sudo aufruft, können Sie in dieser Datei neu bestimmen. Setzen Sie es beispielsweise auf Defaults logfile = /var/log/sudo.log, wird von nun an jede sudo-Aktion dort notiert. Der Nachteil: Sie müssen sich um dieses Logfile auch kümmern, damit die Partition, die /var enthält, nicht "überläuft".

Seine ganzen Vorteile entfaltet sudo auf der Kommandozeile in Kombination mit anderen Kommandos: Wer seine Verbindung zum Internet bisher als root von Hand in der root-Shell gestartet hat, wird schnell die Vorteile erkennen. Erlauben Sie in der /etc/sudoers Ihrem Standardbenutzer das Starten des Einwahlskriptes, z. B. für das Programm pon von Debian:

# Cmnd alias specification
Cmnd_Alias NET = /usr/bin/pon, /usr/bin/poff
# User privilege specification
root    ALL=(ALL) ALL
huhn    ALL=NET

Der Benutzer huhn darf jetzt sudo /usr/bin/pon und sudo /usr/bin/poff ausführen. Richtig praktisch ist nun noch ein Eintrag in die Datei .bashrc:

alias netz_an='sudo /usr/bin/pon'
alias netz_aus='sudo /usr/bin/poff'

Lesen Sie nach dieser Änderung die Datei neu ein (. .bashrc), und Sie können nun als einfacher User mit einem Befehl und Ihrem eigenen Passwort den Zugang zum Internet kontrollieren.

Glossar

Timestamps

Unix-Dateisysteme verwalten für eine Datei verschiedene Datumseinträge, z. B. die Zeit des letzten Zugriffs oder der letzten Änderung. Gerade für Backups oder Sicherungskopien ist es wichtig, den Zeitstempel der Originalzeit (etwa den der letzten Modifikation) zu behalten, bevor man vielleicht eine falsche Datei weiter bearbeitet.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: su, sudo
    Sicher ist sicher – selbst wer Root-Rechte auf dem System hat, sollte nur temporär als Administrator arbeiten, um nicht aus Versehen Schaden anzurichten. Mit su und sudo wechseln Sie auf der Kommandozeile schnell die Identität.
  • useradd, usermod, userdel
    Viele Wege führen zu einem neuen Benutzer-Account auf Ihrem Linux-Rechner – entweder editieren Sie alle Konfigurationsdateien von Hand oder benutzen ein grafisches Tool der eigenen Distribution (YaST, userdrake oder redhat-config-users). In dieser Zu-Befehl-Folge begeben wir uns auf die Admin-Seite des Linux-Lebens und zeigen Hintergründe, Tricks und Werkzeuge der Benutzerverwaltung auf der Kommandozeile.
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...