- sudo
-
sudo (kurz für substitute user do[1]) ist ein Befehl unter Unix und unixartigen Betriebssystemen wie Linux oder Mac OS X, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z. B. des Superusers root) zu starten. Der dauerhafte Wechsel der Identität erfolgt durch sudo -s, sudo -i oder mit dem Befehl su.
Man benutzt sudo anstelle von su, um bestimmten Benutzern die Möglichkeit zu geben, gewisse Programme z. B. mit Root-Rechten ausführen zu können, ohne das Root-Passwort weitergeben zu müssen. Die Sicherheitsrichtlinien sind bei Unix-artigen Systemen in der Datei
/etc/sudoers
gespeichert, die nur vom Superuser root editiert werden darf.Inhaltsverzeichnis
Geschichte
Der Befehl wurde um 1980 an der State University of New York at Buffalo „erfunden“, weil man erkannte, dass viele Studenten Befehle brauchten, die eigentlich nur von Administratoren benutzt werden dürfen, die jedoch keine Gefahr für das existierende System darstellten. Bob Coggeshall und Cliff Spencer implementierten den Befehl auf einem VAX-11/750 unter 4.1BSD. Der ursprüngliche sudo-Befehl wurde 1983/84 für AT&Ts Unix-System V entwickelt. 1991 schrieben Dave Hieb und Jeff Nieusma eine neue Version für die Firma „The Root Group“. Diese Version wurde später unter der GNU General Public License veröffentlicht. Darauf basierte Todd Millers „CU sudo“, das erstmals 1994 erschien. 1999 wurde die Vorsilbe „CU“, die bis dahin der Unterscheidung von der „Root Group“-Version gedient hatte, gestrichen. Seit Version 1.6 ist kein Originalcode dieser Version mehr im vormaligen CU sudo enthalten, das unter einer BSD-Lizenz erhältlich ist.
Konfiguration
In der Datei /etc/sudoers wird festgelegt, welche Benutzer oder Gruppen bestimmte Programme mit welchen Rechten ausführen dürfen. Die Syntax ist ziemlich kompliziert, insbesondere, wenn man mehrere Programme erlauben will. Eine einfache Variante ist z. B. '%admin ALL = (ALL) NOPASSWD: ALL'. Dies bedeutet, dass die Mitglieder der Gruppe 'admin' ohne Eingabe ihres persönlichen Passworts alle Kommandos mit Root-Rechten ausführen dürfen.
sudo im Netzwerkalltag
Mit sudo können Root-Rechte vergeben werden, ohne das Passwort publizieren zu müssen. Beispielsweise kann man einer Wartungsfirma für einen bestimmten Zweck einen sudo zuordnen und diesen nach Erledigung der Aufgabe wieder löschen. Auch bei Systemen mit mehreren Administratoren hat es Vorteile, sich nur mit sudo anzumelden, da aus der Logdatei ersichtlich ist, wer sich wann angemeldet hat.
Alternative
Mit sudo einem Benutzer beispielsweise nur die Administration des Squid-Servers zu erlauben, ist eine nahezu hoffnungslose Aufgabe, da sudo befehlsorientiert arbeitet. Wenn man z. B. mit sudo einen Editor mit Root-Rechten erlaubt, kann dieser natürlich für beliebige Dateien verwendet werden. Als Alternative empfiehlt sich in solchen Fällen Webmin oder der Befehl sudoedit, hinter dem sich nichts anderes verbirgt als der Aufruf von sudo mit dem Parameter -e.
Windows
Auf Systemen mit Windows 2000 oder höher gibt es den Befehl runas, durch den Programme mit den Rechten eines anderen Benutzers gestartet werden können. Dieser ist aber nicht mit sudo gleichzusetzen, sondern eher mit dem Unix-Kommando su: Bei runas muss ebenso das Passwort des Accounts bekannt sein, dessen Privilegien benutzt werden sollen. Dies ist bei sudo nicht der Fall.
Bei Microsoft Windows Vista und Windows 7 ist ein Mechanismus zur Privilegänderung implementiert, genannt User Account Control (UAC), der aber ebenso nicht mit sudo gleichzusetzen ist, da es sich bei UAC um einen Systemhypervisor handelt, wie er z. B. unter SELinux zu finden ist.
Es gibt Implementierungen, auch unter freien Lizenzen, die für Windows den sudo-Mechanismus teilweise nachbilden.
Weblinks
sudo(8)
– Linux-Manpage (Englisch)- Offizielle Webpräsenz
- Deutschsprachige sudo-Anleitung
- sudo-Skripts
- sudo for Windows
- SuRun – Freeware-Lösung für Windows bis inkl. Vista
- pfexec – Solaris sudo replacement
Einzelnachweise
Kategorien:- Unix-Software
- IT-Sicherheit
Wikimedia Foundation.