Используем команду Sudo в Windows 11 для повышения привилегий

Начиная с билда 24H2, в Windows 11 доступна встроенная команда sudo, которую можно использовать для запуска команд с правами администратора прямо из непривилегированной сессии cmd/PowerShell.

По умолчанию команда sudo в Windows 11 отключена. Включить ее можно переключателем Enable sudo через панель Settings -> System -> For developers.

Включить sudo в Windows 11

Либо можно включить sudo можно через реестр:

reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Sudo" /v "Enabled" /t REG_DWORD /d 1 /f

Например, следующая PowerShell команда перезапуска службы Windows при запуске из непривелигированной сессии возвращает ошибку:

Restart-Service iphlpsvc

Теперь включаем sudo в настройках Windows и эту же команду запускаем через sudo:

sudo powershell "Restart-Service iphlpsvc"

Появится окно запроса контроля учетных записей UAC на повышение привилегий и команда будет выполнена с правами администратора.

Запрос повышения привилегий UAC в sudo

запуск powershell команды с правами администратора через sudo

В отличии от runas, команда sudo не запрашивает пароль администратора в командной строке. Запрос UAC используется для подтверждения и повышения прав текущего пользователя без возможности выбора другого пользователя.

Аналогично можно использовать sudo в cmd. Пробую остановить службу в окне обычной командой строки:

net stop iphlpsvc

System error 5 has occurred.
Access is denied.

Теперь запускаю эту же команду через sudo:

sudo net stop iphlpsvc

используем sudo в командной строке windows

Ранее, чтобы запустить программу или команду с повышенными правами из непривилегированной консоли, приходилось открывать новое окно командной строки в режиме “Run as administrator”. Либо, если PowerShell запущен без прав администратора, приходилось запускать новую сессию с повышенными правами из текущей сессии так:

Start-Process powershell -Verb runAs

Sudo для Windows может запускать приложения с повышенными правами в трех режимах, которые можно выбрать в параметрах sudo в панели управления или задать из командой строки:

  • В новом окне (In a new window) – при запуске команды/приложения через sudo, она запускается в новом окне (сессии), запущенной с правами администратора (это поведение по умолчанию): sudo config --enable forceNewWindow
  • With input disabled – самый безопасный вариант, когда команда запускается в привилегированном режиме в текущем окне, но не может получать или запрашивать данные от пользователя в этом окне: sudo config --enable disableInput
  • Inline – это режим наиболее похож на поведение команды sudo в Linux и других ОС. Команда с повышенными правами запускается в текущем окне и может получать входные данные из консоли (самый удобный, но менее безопасный вариант): sudo config --enable normal

Режимы запуска команд через sudo

Можно принудительно запустить команду внутри текущего окна независимости от текущего режима sudo. Достаточно добавить параметр inline.

sudo --inline net stop iphlpsvc

Повышение привилегий через sudo в текущем окне командной строки windows

Полный список поддерживаемых опций и параметров sudo в Windows можно вывести такой командой:

sudo -h

справка по параметрам sudo


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)