Sudo
aus Wikipedia, der freien Enzyklopädie
![]() |
Der korrekte Titel dieses Artikels lautet „sudo“. Diese Schreibweise ist aufgrund technischer Einschränkungen nicht möglich. |
sudo (substitute user do oder superuser do) ist ein Befehl unter Unix und unixartigen Betriebssystemen wie GNU/Linux, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers, beispielsweise des Superusers root, als denen des gerade angemeldeten Benutzers zu starten. Der dauerhafte Wechsel der Identität erfolgt durch sudo -s oder mit dem Befehl su.
Man benutzt sudo anstelle von su, um bestimmten Benutzern (unter Umständen) die Möglichkeit zu geben, z. B. bestimmte Programme mit Root-Rechten auszuführen, jedoch keine kompletten Root-Rechte vergeben zu müssen. Die Sicherheitsrichtlinien sind bei GNU Linux/*nix-artigen Systemen in der Datei /etc/sudoers
gespeichert, die natürlich nur vom Superuser root editiert werden darf.
Inhaltsverzeichnis |
[Bearbeiten] Geschichte
Der Befehl wurde um 1980 an der State University of New York in 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 BSD-Lizenz erhältlich ist.
[Bearbeiten] Konfiguration
In der Datei /etc/sudoers wird festgelegt, welche User 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.
[Bearbeiten] Sudo im Netzwerkalltag
Sudo ist hier extrem nützlich, da Root-Rechte vergeben werden können, ohne das Passwort publizieren zu müssen. Z.B. 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 Admins sollte man sich grundsätzlich nur mit Sudo anmelden, da dann aus dem Logfile ersichtlich ist, wer sich wann angemeldet hat.
[Bearbeiten] Alternative
Mit sudo einem User 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.
[Bearbeiten] Windows
Bei Windows 2000 und XP Systemen gibt es den Befehl runas, durch den Programme mit den Rechten eines anderen Users gestartet werden können. Dieser ist aber nicht mit Sudo zu vergleichen (sondern eher mit dem Unix-Kommando su). Bei runas wie auch bei su muss das Passwort des Accounts bekannt sein, dessen Privilegien benutzt werden sollen. Dies ist bei Sudo nicht der Fall.
Bei Microsoft Windows Vista ist ein weitergehender Mechanismus zur Privilegänderung implementiert, genannt UAC (User Account Control), der aber auch nicht mit Sudo vergleichbar ist.
Es gibt Implementationen, auch unter freien Lizenzen, die für Windows den Sudo-Mechanismus mehr oder weniger treu nachbilden. Eine sehr gute Nachbildung ist Sudo for Windows.