Sudo

sudo

Basisdaten

Entwickler Todd C. Miller
Aktuelle Version 1.9.16p1[1]
(12. November 2024)
Betriebssystem GNU/Linux, Unix (macOS, BSD) u. a.
Programmier­sprache C[2]
Kategorie Zugriffskontrolle
Lizenz ISC-Lizenz[3]
deutschsprachig ja
sudo.ws

sudo ([ˈsuːduː],[4] Akronym für su “do”[5]) ist ein Befehl unter Unix und unixartigen Betriebssystemen wie Linux oder macOS, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers (z. B. des Superusers root) zu starten. Im Gegensatz zu dem nicht zu sudo gehörenden su ist einstellbar, welche Befehle ausgeführt werden dürfen. Der dauerhafte Wechsel der Identität ist ebenfalls möglich durch sudo -s und sudo -i.

Geschichte

Die erste Version entstand um 1980 an der State 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 einer 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. Ab Version 1.6 ist kein Originalcode dieser Version mehr im vormaligen CU sudo enthalten, das unter einer BSD-Lizenz erhältlich ist.[6]

Konfiguration

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 Gruppe admin 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 Benutzer user1:

user1 ALL = (root) /usr/bin/apt-get update, /usr/bin/apt-get dist-upgrade

Die Bearbeitung der sudoers sollte aus Sicherheitsgründen nur dem Superuser erlaubt sein.

Alternative

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 etwa Role Based Access Control und Mandatory Access Control.

Windows

Es gibt Implementierungen für Windows wie sudowin[7] und SuRun[8], die den sudo-Mechanismus teilweise nachbilden.

Der Befehl runas unter Windows 2000 oder höher erlaubt das Starten von Programmen mit den Rechten eines anderen Accounts, wenn dessen Passwort bekannt ist. runas entspricht also nicht sudo, sondern dem Unix-Kommando su.

Der Mechanismus der Benutzerkontensteuerung unter Microsoft 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ür Windows 11 vorgestellt.[9]

Einzelnachweise

  1. Todd C. Miller: [sudo-announce] sudo 1.9.16p1 released. 12. November 2024 (abgerufen am 18. November 2024).
  2. The sudo Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 16. Dezember 2018).
  3. sudo Lizenz. Abgerufen am 16. August 2013.
  4. Interview mit Robert Coggeshall. Abgerufen am 28. Mai 2014.
  5. Sudo Main Page. Abgerufen am 23. Februar 2015.
  6. Geschichte der Entwicklung von sudo. Abgerufen am 29. August 2013.
  7. Sudo for Windows. Abgerufen am 19. Dezember 2012.
  8. SuRun. Abgerufen am 19. Dezember 2012.
  9. Introducing Sudo for Windows. Abgerufen am 9. Februar 2024.