Das neue Sudo für Windows: Eine Mogelpackung von Microsoft

Als Video ansehen
Bereitgestellt über YouTube

Das neue Sudo für Windows: Eine Mogelpackung von Microsoft

Microsoft hat das Konzept des in den 1980er Jahren unter Unix entstandenen und unter GNU/Linux seit Jahrzehnten verbreitete sudo kopiert – Zumindest auf den ersten Blick. Tatsächlich ist Microsofts Kopie weitaus weniger mächtig, als das Original. Ich habe es ausprobiert, wir schauen in diesem Beitrag zusammen genauer hin. Außerdem zeige ich euch, wie es in der Vorschau-Version von Windows 11 aktiviert werden kann.

Was ist sudo?

Wer noch wenig Berührungspunkte mit GNU/Linux oder anderen Betriebssystemen aus der Unix-Familie hatte: Sudo entstand in den frühen 1980er Jahren, um Uni-Studenten volle Root-Rechte (= Administrator) auf einzelne Programme zu gewähren.1 Dafür gibt es die sudoers Datei. Bis dahin war es lediglich möglich, einen Benutzer auf das gesamte System zu berechtigen.

Mit visudo kann die sudoers Datei inklusive Syntaxprüfung bearbeitet werden. Folgende Zeile erlaubt beispielsweise dem Benutzer namens student, den Systemd-Dienst des Apache2 Webservers ohne Passworteingabe neu starten zu dürfen:

student ALL=NOPASSWD: /usr/bin/systemctl restart apache2.service

Mehrere Befehle könnten per Komma getrennt werden, um etwa auch die Start/Stop Operationen zu erlauben. Zuvor wurde dies dem Nutzer noch verweigert, weil er keine Berechtigung besaß.

Sudo bietet nicht nur feine Berechtigungen mit Protokollierung. Es ist sicher & bequem nutzbar, weil man beim Arbeiten mit einem normalen Konto jederzeit sudo vor einen Befehl setzen kann, um diesen mit vollen Root-Rechten auszuführen. Im Gegensatz zu einer Anmeldung mit einem separaten (Root/Admin) Nutzer unterbricht das den Arbeitsablauf nicht. Außerdem lässt sich einstellen, ob Sudo die Eingabe des Passworts benötigt. Falls ja, kann eine Art Ticket festgelegt werden: Wer sich mit Sudo authentifiziert, darf es X Minuten ohne erneute Kennworteingabe verwenden.2

$ sudo journalctl -f /usr/bin/sudo
[...]
May 13 14:20:09 pi5 sudo[8285]: pam_unix(sudo:auth): conversation failed
May 13 14:20:09 pi5 sudo[8285]: pam_unix(sudo:auth): auth could not identify password for [student]
May 13 14:20:09 pi5 sudo[8285]:  student : user NOT in sudoers ; TTY=pts/3 ; PWD=/home/student ; USER=root ; COMMAND=/usr/bin/whoami

Was bietet Microsoft Windows bisher?

Lange Zeit hat man unter Windows alles mit einem Administrator-Konto gemacht. Erst Windows 2000 führte den runas Befehl ein, um ohne umständliches Ummelden als Benutzer A ein bestimmtes Programm als Benutzer B ausführen zu können.3 Das wurde jedoch kaum genutzt, weil es immer noch umständlich war und die Software dadurch im Kontext von Benutzer B lief. Außerdem holte Windows die Vergangenheit ein: Da es lange Zeit üblich war, mit einem Administrator-Konto alle Programme zu starten, funktionierten viele mit einem normalen Konto gar nicht.

Es sollte bis 2006 dauern, als Microsoft mit Windows Vista die Benutzerkontensteuerung erschuf. Nutzer mit Administratorrechten erhalten eine Bildschirmfüllende Meldung (UAC-Dialog), wenn ein Programm Administratorrechte in Anspruch nehmen möchte. Bevor der Nutzer dies nicht genehmigt, wird die Aktion nicht ausgeführt.4 Diese Schutzschicht soll sicherstellen, dass nur erwünschte Software volle Rechte erhält. Zuvor reichte ein falscher Klick, um einem (potenziell gefährlichem) Programm Admin-Rechte zu gewähren.

Das ist ein Ansatz, jedoch mit entscheidendem Nachteil: Die Software lief dadurch im Kontext eines Administrators, statt des angemeldeten Nutzers. Dies verursacht an einigen Stellen Probleme. Beispielsweise werden Einstellungen im falschen Benutzerprofil gespeichert oder die Rechte an erzeugten Dateien fehlen. Es gibt daher schon seit vielen Jahren Projekte aus der Community, die versuchen, sudo in Windows zumindest ansatzweise nachzubauen – SuRun5 und sudowin6 sind zwei Beispiele. Da beide nicht auf Eben des OS arbeiten, nutzen sie Tricks. SuRun beispielsweise nimmt den normalen Benutzer kurzzeitig in eine Adminstrator-Gruppe auf und entfernt ihn anschließend wieder daraus.7

18 Jahre später: So funktioniert Sudo für Windows

Wieder dauert es eine ganze Weile, bis Microsoft das Problem angeht. Etwa 39 Jahre nachdem sudo entstand, entwickeln sie ihre eigene Implementierung für Windows.8 Es startet einen neuen Prozess mit erhöhten Rechten, der (ggf. Eingeschränkt) mit dem ursprünglichen Prozess kommuniziert, von dem aus sudo aufgerufen wurde.9 Derzeit ist es nur in der Vorschau-Version enthalten, konkret Windows 11 Insider Preview 26045 – oder 26052, je nachdem, welcher Microsoft-Doku man glauben mag.10 Ich habe sicherheitshalber 26058 genommen, dort ist es enthalten. Es muss zwar nicht installiert werden, allerdings einmalig aktiviert und konfiguriert. Ansonsten liefert der sudo Befehl nur eine Fehlermeldung.

Praktisch: Bei gedrückter [STRG] Taste erreicht man über den verlinkten Developer Settings page Text direkt die Einstellungsseite unter System > Für Entwickler. Vor der Aktivierung erscheint eine Warnmeldung.

Während das Konzept vom Unix bzw. GNU/Linux-Vorbild übernommen wurde, unterscheidet sich Sudo für Windows. Man sollte daher die Einstellungsgruppe ausklappen und sich die drei Varianten anschauen. Standardmäßig verhält sich Sudo für Windows nämlich ganz anders, als man es seit Jahrzehnten von GNU/Linux gewohnt ist.11 Die Voreinstellung In einem neuen Fenster öffnet eine neue Konsole mit Administrator-Rechten und führt den Befehl dort aus.

Das ist äußerst ungünstig und wird einige verwirren, weil sich Konsolenfenster unter Windows bekannterweise automatisch schließen, nachdem das Programm darin beendet ist. Wer also nur einen Befehl wie whoami ausführt, der den Name des angemeldeten Benutzers ausgibt und sich danach beendet, kann Sudo für Windows in der Form nicht nutzen. Hier erscheint kurz ein Konsolenfenster, das sofort wieder verschwindet. Unter GNU/Linux würde dies problemlos funktionieren. Unter Windows erfordert das einen Workaround: Etwa eine CMD-Instanz starten, in der man den Befehl aufruft, sowie anschließend mit pause das Fenster blockiert.

Erst die anderen beiden Optionen lösen dieses Problem durch Ausführung des Befehls in der bereits geöffneten Konsole. Inline entspricht der GNU/Linux Implementierung von sudo. Damit kann der Nutzer mit der Software interagieren, beispielsweise für Bestätigungen oder andere Nutzereingaben.

In allen Fällen erscheint die UAC-Abfrage der Benutzerkontensteuerung, wie es seit Vista bei administrativen Funktionen üblich ist:

Ungünstig finde ich allerdings, dass hier standardmäßig nur sudo angezeigt wird. Technisch ist das zwar korrekt – schließlich fordert es die erhöhten Rechte an. Für den Nutzer ist aber erst mal nicht klar, welches Zielprogramm gestartet wird. Immerhin sieht man das nach dem Einblenden der Details am Ende:

Das ist intransparent. Bei klassischer Software mag das Konzept in Ordnung sein, lediglich den Name des Programms anzuzeigen. Hier passt es nicht, weil sudo bloß eine Zwischenschicht ist und alleine keine Rückschlüsse darauf zulässt, was dadurch letztendlich mit vollen Rechten ausgeführt wird. Daher sollte aus meiner Sicht der ausgeführte Befehl standardmäßig eingeblendet werden. Ein Vorschlag für 2024? 😉

Automatische Aktivierung & Konfiguration

Alternativ zum obigen Weg lässt es sich auch über die Kommandozeile und damit automatisiert aktivieren:12

sudo config --enable <variante>

Mögliche Varianten sind:

  • forceNewWindow
  • disableInput
  • normal (entspricht Inline aus der grafischen Einstellung)

Im Hintergrund wird ein Registry-Schlüssel in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Sudo geändert: 0 steht für deaktiviert. Bei 1 ist es aktiviert und öffnet ein neues Fenster.

Was Sudo für Windows alles nicht kann

Und hier ist der Spuk bereits vorbei. Wer die GNU/Linux-Implementierung von Sudo kennt, wird große Augen machen – dort würde man an dieser Stelle erst anfangen: Welche Befehle soll der Nutzer ausführen können? Ist die Eingabe des Nutzer-Passworts erforderlich? Wenn ja, bei jedem Aufruf oder wie lange bleibt die Sitzung authentifiziert? All das ist mit Sudo für Windows nicht möglich, wie die sehr überschaubare offizielle Dokumentation bestätigt.13

Genau das hat sudo aber in der Unix und später auch unter GNU/Linux so erfolgreich gemacht: Studenten dürfen nur bestimmte Software privilegiert starten. Statt lediglich einen bequemeren Weg zu bieten, seine Administratorrechte aus der laufenden Sitzung heraus zu verwenden. Mehr ist von Sudo für Windows nicht übrig geblieben. Die Sicherheitsarchitektur des verbliebenen Rests wird dennoch kritisch begutachtet.14

Kommunikativ hat es Microsoft zudem wieder einmal geschafft, alle zu verwirren. Dies fängt mit einer chaotischen Kommunikation an und hört damit auf, dass die Vorschau-Version von Windows Server ebenfalls Sudo für Windows enthält. Später rudert der Konzern jedoch zurück: Man hat vergessen, die Einstellung zu entfernen. Auf Windows Servern soll das Werkzeug nicht zur Verfügung stehen.15 Das ist grotesk. Unter GNU/Linux ist Sudo eine Software, die man überall installieren kann, wo sie benötigt wird und zum Lieferumfang vieler Distributionen gehört. Natürlich auch auf Servern, weil dort ebenfalls verschiedene Software mit höheren Rechten gestartet werden muss.

Windows 10 schaut ebenfalls in die Röhre. Dazu sagt Microsoft nur, dass sie es möglicherweise später für Windows 10 anbieten. All zu viel Zeit bleibt ihnen nicht mehr, wenn es für Windows 11 in der zweiten Jahreshälfte 2024 erscheinen soll. 2025 möchte der Konzern die Unterstützung für Windows 10 ja offiziell komplett beenden. Zumindest für „normale“ Kunden – gegen Aufpreis bequemt sich Microsoft, immerhin Unternehmen weiterhin Updates zu liefern.

Fazit

Sudo für Windows klang nach einer vollwertigen Portierung des beliebten GNU/Linux-Werkzeugs, wie es der Konzern in jüngster Zeit bereits mit anderer Software weitgehendst umgesetzt hat – Etwa Curl als Beispiel. Doch davon ist nicht viel übrig geblieben, der Klon besitzt nur einen Bruchteil der Funktionalität seines Vorbilds. Das dürfte Potenzial für Verwirrungen haben, Microsofts Nachbau deutlich weniger kann, als das Original.

Quellen

  1. https://www.sudo.ws/about/history/ ↩︎
  2. https://www.sudo.ws/about/intro/ ↩︎
  3. https://learn.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/cc772672(v=ws.10)?redirectedfrom=MSDN ↩︎
  4. https://learn.microsoft.com/de-de/windows/security/application-security/application-control/user-account-control/ ↩︎
  5. https://kay-bruns.de/wp/software/surun/ ↩︎
  6. https://sourceforge.net/projects/sudowin/ ↩︎
  7. https://kay-bruns.de/wp/software/surun/funktionsweise-von-surun/ ↩︎
  8. https://github.com/microsoft/sudo ↩︎
  9. https://www.deskmodder.de/blog/2024/02/08/sudo-fuer-windows-11-bestaetigt-blogbeitrag-veroeffentlicht-und-zurueckgezogen/#comments ↩︎
  10. https://learn.microsoft.com/de-de/windows/sudo/ ↩︎
  11. https://www.computerbase.de/2024-02/microsoft-windows-sudo-findet-seinen-weg-von-linux-nach-redmond/ ↩︎
  12. https://learn.microsoft.com/en-us/windows/sudo/#how-to-configure-sudo-for-windows ↩︎
  13. https://learn.microsoft.com/en-us/windows/sudo/ ↩︎
  14. https://www.tiraniddo.dev/2024/02/sudo-on-windows-quick-rundown.html ↩︎
  15. https://www.heise.de/news/sudo-nicht-fuer-den-Windows-Server-9626496.html?wt_mc=rss.red.ho.beitrag.rdf.beitrag.beitrag ↩︎

Leave a Reply