| sudo | |
|---|---|
Sudo in einem Terminal, unter Ubuntu Linux | |
| Basisdaten | |
| Entwickler | Todd C. Miller |
| Aktuelle Version | 1.9.17p2[1] (26. Juli 2025) |
| Betriebssystem | GNU/Linux,Unix (macOS,BSD) u. a. |
| Programmiersprache | C[2] |
| Kategorie | Zugriffskontrolle |
| Lizenz | ISC-Lizenz[3] |
| deutschsprachig | ja |
| sudo.ws | |
sudo ([ˈsuːduː],[4]Akronym fürsu “do”[5]) ist ein Befehl unterUnix undunixartigen Betriebssystemen wieLinux odermacOS, mit welchem Prozesse mit den Rechten eines anderen Benutzers (z. B. desSuperusersroot) gestartet werden können. Im Gegensatz zu dem nicht zu sudo gehörendensu ist einstellbar, welche Befehle ausgeführt werden dürfen. Der dauerhafte Wechsel der Identität ist ebenfalls möglich durchsudo -s undsudo -i.
Die erste Version entstand um 1980 an derState University of New York at Buffalo, 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 einerVAX-11/750 unter4.1BSD. Der ursprüngliche sudo-Befehl wurde 1983/84 fürAT&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 derGNU 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. Ab Version 1.6 ist kein Originalcode dieser Version mehr im vormaligen CU sudo enthalten, das unter einerBSD-Lizenz erhältlich ist.[6] Eine weitere Neuimplementation von sudo istsudo-rs, das ab 2023 komplett inRust entwickelt und vonAmazon Web Services finanziert wurde.[7] Die Rust-Neuimplementierung wird u. a. vonCanonical inUbuntu 25.10 statt dem klassischen inC geschriebenensudo verwendet, was die Sicherheit erhöhen soll.[8]
In der Datei/etc/sudoers wird festgelegt, welche Benutzer oder Gruppen bestimmte Programme mit welchen Rechten ausführen dürfen. Eine einfache Variante ist z. B.:
%admin ALL = (root) NOPASSWD: ALL
Dies bedeutet, dass die Mitglieder der Gruppeadmin ohne Eingabe ihres persönlichen Passworts alle Kommandos mit Root-Rechten ausführen dürfen. Es können auch nur bestimmte Kommandos freigegeben werden wie in dem folgenden Beispiel für den Benutzeruser1:
user1 ALL = (root) /usr/bin/apt-get update, /usr/bin/apt-get dist-upgrade
Die Bearbeitung dersudoers sollte aus Sicherheitsgründen nur dem Superuser erlaubt sein.
Aufgrund der funktionsbedingten Arbeitsweise, die Ausführung von Programmen zu steuern, ist über sudo eine unbedachte Ausweitung von Rechten möglich. Weitergehende Techniken wie die Zuordnung einzelner Rechte zu Benutzern sind etwaRole Based Access Control undMandatory Access Control.
Es gibt Implementierungen für Windows wie sudowin[9] und SuRun[10], die den sudo-Mechanismus teilweise nachbilden.
Der Befehlrunas unterWindows 2000 oder höher erlaubt das Starten von Programmen mit den Rechten eines anderen Accounts, wenn dessenPasswort bekannt ist.runas entspricht also nicht sudo, sondern dem Unix-Kommandosu.
Der Mechanismus derBenutzerkontensteuerung unterMicrosoft Windows Vista und später ist ebenfalls nicht mit sudo gleichzusetzen, da hier zwischen den zwei Identitäten des „Geschützten Administrators“ (Protected Administrator, PA) gewechselt wird.
Im Februar 2024 hat Microsoft eine eigene Implementierung des sudo-Konzeptes fürWindows 11 vorgestellt.[11]