作者 | Claudio Masolo
译者 | 平川
策划 | 丁晓昀
微软宣布将在最新版的 Windows 11 Insider Preview Build 26052 中提供 Sudo for Windows。该工具改变了用户从非特权控制台会话(unelevated console session)直接执行特权命令的方式。Sudo for Windows 提供了一种直观、熟悉的解决方案。用户无需打开新的特权控制台窗口,这增强了用户体验。
Sudo for Windows 在 GitHub 上开源,开发计划和附加功能会在未来几个月发布。微软建议,如果用户需要尚未在 Sudo for Windows 中实现的扩展功能,则可以选择 Gerardo Grignoli 的 gsudo 作为替代。该工具提供了许多附加功能和配置选项。
要激活 Sudo for Windows,定位到 Windows Settings 下的 Settings > For Developers 页,并打开“Enable Sudo”选项,如下所示:
此外,用户也可以通过在特权控制台会话中执行以下命令来启用:
代码语言:javascript复制sudo config --enable <configuration_option>
Sudo for Windows 支持 3 种配置选项,每个选项有不同的用途:
- 打开新窗口(forceNewWindow):打开一个新的特权控制台窗口来执行命令。
- 关闭输入(disableInput):在当前窗口中执行特权进程,关闭 stdin,限制用户输入。
- 内联(normal):行为类似于其他操作系统上的 sudo,将 stdin、stdout 和 stderr 连接到当前窗口。
以下是示例场景:
- “打开新窗口”配置:运行
sudo netstat -ab
命令会打开一个新的特权控制台窗口,并在其中执行这条命令。 - “关闭输入”配置:在当前窗口中运行特权进程,stdin 关闭。
- “内联”配置:将 stdin、stdout 和 stderr 连接到当前窗口。
当使用sudo
提升进程权限时,用户帐户控制(UAC)对话框会提示用户确认。用户确认后,系统将根据所选配置提升进程权限。用户可以通过在控制台中运行sudo -h
来查看 sudo 命令的可选参数。
在“打开新窗口”配置中,sudo.exe 会启动一个新的特权控制台窗口,并镜像当前窗口的目录和环境变量。对于“关闭输入”和“内联”配置,sudo.exe 会启动一个新的特权进程。原来的非特权“sudo.exe”将与特权进程建立 RPC 连接,方便信息交换。
进程层次结构图解
由于存在安全风险,所以务请谨慎使用“内联”或“关闭输入”配置。“关闭输入”配置通过防止特权进程读取用户输入来降低风险。
原文链接:
https://www.infoq.com/news/2024/02/sudo-windows/
声明:本文为 InfoQ 翻译,未经许可禁止转载。