Sudo for Windows — obsługa sudo w środowisku Windows

19 lutego, 2024

W build 26052 systemu Windows 11 Insider Preview jedną z dodanych opcji jest wsparcie dla znanego z Linuxa sudo. Standardowo sudo w systemach Linux umożliwia wykonanie poleceń na prawach innego użytkownika (nawet bez konieczności przelogowania), z czego najbardziej powszechnym przypadkiem jest wykonanie poleceń jako root. Nie jest to funkcjonalność dostępna dla każdego użytkownika — musi on przynależeć do grupy sudo (wheel w systemach RHEL) lub posiadać odpowiedni wpis w /etc/sudoers.

Opracowane przez Microsoft rozwiązanie, którego kod źródłowy (całość napisana w PowerShell) znajdziemy w repozytorium na GitHub, pozwala wykonać podane jako argument polecenie na prawach administratora. Zapoznałem się w praktyce z możliwościami sudo w systemie Windows i jest to zdecydowane ułatwienie pracy, szczególnie w systemach desktopowych (z nieaktywnym wbudowanym kontem Administrator), gdzie przykładowo w celu wykonania poleceń CMD wymagających szerszych uprawnień należy „ręcznie” uruchomić Wiersz polecenia jako użytkownik uprzywilejowany.

Istniało już co prawda gsudo, ale to narzędzie rozwijane przez zewnętrznego autora. Sudo for Windows będzie oficjalnym dodatkiem i pewnie pojawi się także w standardowych edycjach systemu Windows 11.

Wspomniany build 26052 nie jest już najnowszą kompilacją, na dzień przygotowywania tego tekstu najnowsza wersja to 26058. Obsługa sudo została w niej oczywiście zawarta. Dedykowany dla nas link do pliku ISO z aktualnym build można wygenerować pod stałym adresem https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso. Sposoby instalacji tego systemu są dwa. Można zamontować dysk z pobranym plikiem (a nawet sam plik ISO poprzez opcję Instalacja widocznym po kliknięciu ikony pliku prawym przyciskiem myszy) i uruchomić z niego program setup.exe, który w kilku niewymagających wyjaśnień krokach przeprowadzi nas przez cały proces.

Próbowałem skorzystać z tej możliwości w środowisku maszyny wirtualnej VirtualBox z Windows 11 i niestety każda próba kończyła się niepowodzeniem, a ostatecznie wykonanym automatycznie rollback’iem do oryginalnie zainstalowanej wersji. O ile udało mi się rozwiązać problemy po stronie VirtualBox, to jednak wszystkie próby zajęły znaczną ilość czasu. Po ilości wątków w witrynach VirtualBox i Microsoft Community mogę stwierdzić, że nie jestem pierwszą osobą, która napotkała te trudności.

Dlatego sugeruję wybranie drugiej opcji, czyli czystej instalacji. Wtedy szanse na ewentualne niepowodzenie są znacznie mniejsze niż w przypadku „zastępowania” wcześniej zainstalowanego systemu Windows. Użycie maszyny wirtualnej będzie dobrym wyborem, ale jeśli preferowane jest wykorzystanie fizycznego sprzętu, to wcześniej powinna zostać wykonana kopia zapasowa (najlepiej całego dysku). Systemy pochodzące z Insider Preview mogą zwyczajnie zawierać różne błędy, nie są to wydania stabilne.

Sudo nie jest domyślnie aktywne. Aby umożliwić jego działanie, wystarczy wejść w Ustawienia -> System -> Dla deweloperów i kliknąć interaktywny element przy opcji Włącz program sudo. Pojawi się okno informacyjne, w którym wybieramy Tak.

Aktywacja sudo w Windows.

Sudo for Windows może działać w trzech trybach o następujących nazwach:

  • In a new window (W nowym oknie) — opcja domyślna, otwiera nowe okno z uruchomionym na prawach administratora poleceniem
  • With input disabled (Z wyłączonymi danymi wejściowymi) — uruchamia polecenie w oknie bieżącym, ale jednocześnie blokuje strumień wejścia (stdin)
  • Inline (Wbudowany) — uruchamia standardowo polecenie w oknie bieżącym, najbardziej sensowna opcja

 

Pomoc dla polecenia sudo możemy wyświetlić z użyciem przełącznika –help.

Pomoc dla polecenia sudo.

Załóżmy, że zamierzamy zainstalować FileZilla Server (właściwie bezkonkurencyjny serwer FTP dla Windows). Używam narzędzia Scoop, które pozwala na instalację wielu różnych aplikacji z poziomu CLI. Jak widać, ta konkretna paczka musi zostać zainstalowana na prawach administratora.

Wymagane prawa administratora podczas instalacji FileZilla Server z użyciem Scoop.

Możemy wykonać polecenie

				
					sudo cmd /c scoop install extras/filezilla-server
				
			

W Linuxie pierwsze (lub po upływie czasu ustawionego jako timestamp_timeout) wykonanie sudo przy domyślnej opcji (czyli bez NOPASSWD) będzie związane z koniecznością podania hasła naszego użytkownika. Windows do tej kwestii ma inne podejście i zostanie wyświetlone dobrze znane okno UAC (User Access Control). Przy każdym użyciu sudo potrzebne będzie zatwierdzenie akcji.

Okno UAC przy uruchamianiu cmd.exe z użyciem sudo.

Po wybraniu Tak zostanie otwarte kolejne okno cmd.exe, w którym na prawach administratora zostanie wykonane podane polecenie.

Uruchomione drugie okno cmd.exe poprzez wykonanie sudo.

Tryb W nowym oknie nie zawsze pozwoli na wykonanie wszystkich czynności. Nie zadziała np. uruchomienie graficznego instalatora wybranej aplikacji. Poniższe zrzuty ekranu przedstawiają próby wykonania pliku EXE z domyślną opcją oraz po ustawieniu trybu Wbudowany (wtedy wyświetla się UAC dla programu sudo, zamiast dla programu do uruchomienia podanego jako parametr).

Błąd przy uruchamianiu aplikacji z sudo w trybie Inline.
Okno UAC dla narzędzia sudo.
Działanie sudo w trybie In a new window.

Sudo potrafi ułatwić i przyspieszyć pracę. Jeśli użytkownik wcześniej wykonywał inne operacje w cmd.exe uruchomionym na prawach zwykłego użytkownika, to chcąc wykonać polecenie jako administrator, nie ma potrzeby otwierania drugiego okna Wiersza polecenia (chociaż aplikacja Terminal i ten proces uprościła).

Użycie sudo przy poleceniu netsh.

Do przedstawienia pozostał nam jeszcze tryb Z wyłączonymi danymi wejściowymi. Przygotowałem prosty skrypt Batch, który jako argumenty przyjmuje adres serwera, nazwę użytkownika i jego hasło, po czym zapisuje te dane do pliku hasla.txt. Można zauważyć, że po użyciu sudo skrypt został wykonany, ale podane na wejściu dane nie zostały obsłużone i nie znalazły się w pliku hasla.txt.

Brak możliwości obsługi stdin w Sudo for Windows.

Sudo for Windows to z pewnością warte uwagi rozwiązanie. Aktywujemy je w ustawieniach Dla deweloperów, co wydaje się rozsądną lokalizacją, ponieważ zwykli użytkownicy raczej nie korzystają z konsoli, a programy jako administrator uruchamiają w razie potrzeby w trybie graficznym. Narzędzie nie oferuje na ten moment użyteczności porównywalnej ze swoim prekursorem z systemów Linux, natomiast według podanego w pierwszym akapicie źródła zespół odpowiedzialny za rozwój Sudo for Windows zamierza w najbliższych miesiącach podać więcej szczegółów o dalszych planach.

Michał Giza

Michał Giza

Autor tekstów na portalu Fundacji AVLab dla Cyberbezpieczeństwa. Administrator systemów Linux i Windows Server. Zajmuje się także bezpieczeństwem sieci.
Michał Giza

Michał Giza

Autor tekstów na portalu Fundacji AVLab dla Cyberbezpieczeństwa. Administrator systemów Linux i Windows Server. Zajmuje się także bezpieczeństwem sieci.

PODZIEL SIĘ:

guest
4 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments

Wyrażam zgodę na przesłanie oferty drogą telefoniczną przez IT Partners security sp. z o.o. z siedzibą Katowicach ul.Padereskiego 35 na podany przeze mnie adres e-mail zgodnie z ustawą z dnia 10 maja 2018 roku o ochronie danych osobowych (Dz. Ustaw z 2018, poz. 1000) oraz zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).

Wyrażam zgodę na przesłanie oferty drogą mailową przez IT Partners security sp. z o.o. z siedzibą Katowicach ul.Padereskiego 35 na podany przeze mnie adres e-mail zgodnie z ustawą z dnia 10 maja 2018 roku o ochronie danych osobowych (Dz. Ustaw z 2018, poz. 1000) oraz zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).

[ninja_tables id=”27481″]