windows 11 24h2起原生支持sudo,需在设置→开发者选项中启用,并可配置forcenewwindow、disableinput或normal模式;旧系统可用gsudo替代,通过winget安装并uac提权。

如果您希望在Windows系统中像Linux那样使用sudo命令进行权限提升,则需要启用Windows原生支持的Sudo功能。该功能自Windows 11 Insider Preview Build 26052起正式引入,目前已稳定集成于Windows 11 24H2及后续版本中。以下是开启与使用Windows原生Sudo的具体步骤:
一、通过系统设置启用Sudo功能
此方法适用于运行Windows 11 24H2或更高版本的设备,无需安装第三方工具,直接调用系统内置Sudo服务。启用后可在任意未提升权限的终端(如CMD、PowerShell、Windows Terminal)中使用sudo前缀执行管理员命令。
1、按Windows + I打开“设置”应用。
2、依次进入系统 > 开发者选项(部分系统路径可能显示为“隐私和安全 > 开发者选项”)。
3、在“sudo”相关区域,将启用 sudo开关设置为“开”。
4、在配置 sudo 如何运行应用程序下拉菜单中,选择一种运行模式:forceNewWindow(默认)、disableInput 或 normal。
二、通过命令行配置Sudo运行模式
Windows Sudo支持三种执行模式,每种模式对应不同安全边界与交互行为。可通过命令行动态切换,无需重启终端。配置变更立即生效,影响后续所有sudo调用。
1、以普通用户身份打开命令提示符或PowerShell。
2、执行以下任一命令以设定模式:
— 切换至新窗口模式:sudo config --enable forceNewWindow
— 切换至禁用输入模式:sudo config --enable disableInput
— 切换至内联模式(最接近Linux行为):sudo config --enable normal
3、验证当前配置:运行sudo config --get,输出将显示当前启用的模式名称。
三、使用gsudo作为兼容性替代方案
当系统为Windows 10、旧版Windows 11(低于Build 26052)或需更细粒度控制时,gsudo提供跨版本兼容的sudo语义实现。它不依赖系统内置服务,而是通过独立进程注入与UAC提权机制完成权限提升,支持完整命令行参数传递与I/O重定向。
1、以管理员身份启动PowerShell,执行:winget install gsudo(若已启用winget)。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
2、若未安装winget,可改用Scoop:scoop install gsudo;或从GitHub Releases页面下载gsudo.exe并手动添加至PATH。
3、首次运行任意gsudo命令(如gsudo notepad)时,将触发UAC弹窗,确认后即完成初始化。
4、此后所有命令均可前置gsudo调用,例如:gsudo netstat -ab、gsudo fsutil behavior query DisableLastAccess。
四、验证Sudo功能是否正常工作
启用Sudo后,必须验证其是否能正确触发权限提升并执行受保护操作。推荐使用低风险但需管理员权限的命令进行测试,避免误修改系统状态。测试过程应观察UAC弹窗响应、命令输出完整性及错误码返回情况。
1、在标准用户权限的CMD窗口中输入:sudo cmd /c echo %USERNAME%。
2、确认弹出UAC权限请求窗口,并点击“是”。
3、观察输出结果中的用户名是否为当前登录账户名(而非SYSTEM或其它上下文)。
4、进一步测试I/O重定向能力:sudo reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" > regout.txt 2>&1,检查regout.txt是否成功生成且包含注册表项列表。
五、调整Sudo安全策略与环境变量
Windows原生Sudo通过本地RPC服务(sudo.exe)协调权限提升请求,其行为受系统策略与环境变量约束。部分高级场景需显式配置环境变量以确保子进程继承正确上下文,尤其在脚本自动化或Windows Terminal多标签页环境中。
1、确保当前用户具有“以管理员身份运行”的本地策略权限:检查“本地组策略编辑器”中“计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 用户权利分配 > 作为服务登录”是否包含当前用户。
2、在启动终端前,可设置环境变量以强制指定sudo行为:set SUDO_FORCE_NEW_WINDOW=1(等效于forceNewWindow模式)。
3、若需在脚本中静默跳过UAC确认(仅限开发/测试环境),可预先运行:sudo --policy=always-allow(该策略需管理员权限写入注册表,且仅对当前用户生效)。










