Kilka dni temu Microsoft oficjalnie ogłosił wydanie polecenia „sudo” dla systemu Windows. Na razie opcja ta dostępna będzie tylko w wersji Windows 11 Insider Preview Build 26052. Sudo dla Windows to nowy sposób, w jaki użytkownicy mogą uruchamiać polecenia z podwyższonym poziomem uprawnień bezpośrednio z sesji konsoli CMD. Jest to ergonomiczne i znane rozwiązanie dla użytkowników Unix, którzy chcą mieć wyższy poziom konkretnych poleceń bez konieczności otwierania nowej, podwyższonej konsoli.
Jak włączyć sudo na Windows?
Aby włączyć sudo na Windows 11, należy przejść do opcji panelu sterowania: System > Dla programistów i wybrać opcję „enable sudo”:
Ewentualnie możemy użyć polecenia:
sudo config --enable <configuration_option>Dodatkowa konfiguracja
Sudo dla Windows obsługuje w tej chwili trzy różne opcje konfiguracji:
- w nowym oknie (forceNewWindow),
- z zamkniętym strumieniem wejściowym (disableInput),
- wbudowane (normal).
Aby zmienić opcję konfiguracji, możemy użyć menu rozwijanego na poniższej stronie ustawień:
Czym te tryby działania różnią się od siebie?
a) forceNewWindow
W tej konfiguracji sudo otworzy nowe okno konsoli z podwyższonym poziomem uprawnień i uruchomi w tym oknie polecenie. Jest to domyślna opcja konfiguracji, gdy włączone jest sudo. Na przykład gdy uruchomimy polecenie „sudo ping kapitanhack.pl -t”, zostanie ono uruchomione i będzie się wykonywać w nowym oknie CMD kontrolowanym przez nas jako administratora.
b) disableInput
W tej metodzie sudo uruchomi podniesiony proces w bieżącym oknie, ale nowy proces zostanie uruchomiony z zamkniętym stdin. Oznacza to, iż nie będzie akceptował żadnych danych wejściowych użytkownika, więc konfiguracja ta nie będzie działać w przypadku procesów, które wymagają dalszych danych wejściowych użytkownika po podniesieniu uprawnień.
c) normal
Ta konfiguracja jest najbardziej podobna do zachowania sudo w innych systemach operacyjnych. W tej konfiguracji sudo dla Windows uruchomi podwyższony proces z jego standardami stdin, stdout i stderr podłączonymi do bieżącego okna. Oznacza to, iż nowy, podwyższony proces może przyjmować dane wejściowe i kierować dane wyjściowe do bieżącego okna.
Jak to działa „pod spodem”?
Podczas podnoszenia poziomu procesu z wiersza poleceń dzięki sudo pojawi się okno dialogowe UAC z prośbą o potwierdzenie podniesienia poziomu:
Gdy użytkownik potwierdzi podniesienie poziomu, proces zostanie podniesiony w oparciu o opcję konfiguracji wybraną przez użytkownika.
W trybie „new window” sudo.exe otworzy nowe okno konsoli z podwyższonym poziomem uprawnień i uruchomi w tym oknie polecenie. Nowe okno zostanie uruchomione z tym samym katalogiem roboczym, co okno bieżące, a także z tymi samymi zmiennymi środowiskowymi. Konfiguracja ta działa podobnie jak komenda „runas”.
W obu bardziej zamkniętych konfiguracjach sudo.exe uruchomi nowy proces z podwyższonym poziomem uprawnień, a oryginalny, niepodwyższony proces sudo.exe ustanowi połączenie RPC z nowym procesem z podwyższonym poziomem uprawnień. Innymi słowy, informacja jest przekazywana z niepodwyższonej instancji sudo do instancji z podwyższonymi prawami. W szczególności uchwyty konsoli z procesu niepodniesionego są przekazywane do procesu z podwyższonym poziomem uprawnień, co umożliwia procesowi z podwyższonym poziomem uprawnień odczytanie danych wejściowych z procesu niższego i zapisanie danych wyjściowych do procesu wyższego.
Oto diagram przedstawiający hierarchię procesów:
Podczas uruchamiania sudo w konfiguracjach „Inline” lub „Input Closed” ważne, aby mieć świadomość konsekwencji dla bezpieczeństwa. Możliwe, iż proces o średniej integralności może napędzać proces o podwyższonej integralności. Ryzyko to jest ograniczone w konfiguracji „Input Closed”, ponieważ proces z podwyższonym poziomem uprawnień nie będzie w stanie odczytać danych wejściowych od użytkownika.
W nadchodzących miesiącach Microsoft będzie pracować nad rozszerzeniem dokumentacji sudo dla Windows i udostępniać więcej szczegółów na temat konsekwencji uruchamiania sudo w konfiguracji „Inline” pod kątem bezpieczeństwa.