体验 Sudo for Windows
有一段时间没有更新日志了!昨天,微软向 Windows Insider Release Preview Channel 推送了 Windows 11 24H2 - 26100.712,包含了不少新的特性和功能,其中的 sudo 是 gOxiA 特别感兴趣的。是的,你没看错!在 Windows 上我们可以使用 sudo 了,其实早在 26052 时就开始内置 sudo 的支持。
Sudo for Windows 与 xNIX 中 sudo 的用途类似,都是用来实现用户提权执行命令的,对于 sudo for Windows 主要是基于 UAC 的提权,并且它不支持普通账户,这些基本概念要注意!
命令提示符下,不像 UI 界面可以通过选项或热键去激活 UAC 提权,当我们打开 CMD 或 PowerShell 执行一段命令,发现它需要进行 UAC 提权时,通常会重新以 UAC 提权(管理员身份运行)方式打开 CMD 或 PowerShell 再重新执行命令行,这将会经历一系列的键盘或鼠标的切换操作流程!毕竟我们不是每一次都记得先去做 UAC 提权。
现在有了 sudo 一切都变得方便了许多,gOxiA 现在已经把“终端”应用中的“以管理员身份运行此配置文件”的选项关闭了,不用每次涉及到命令行的都要去确认一次 UAC 提权,并且打开终端的速度也快了许多!
sudo for Windows(以下简称 sudo)出于安全性考虑,默认是禁用的,并且它被归类在“开发者选项”中。我们需要进入 Windows 设置,转到“系统”下的“开发者选项”才能找到 sudo 配置,如果你想快速找到它,可以在 Windows 设置的搜索框中键入 sudo 来查找。
如上图所示,当我们打开 sudo 后,可以看到三个 sudo 运行选项:“在新窗口中、禁用输入、内联”。三者中第一个是最为安全的,也是系默认配置,之后依次排列。三个选项根据说明还是很容易理解的,但配合参数后 gOxiA 认为一些安全使用逻辑还有待改进完善!下面让我们分步了解一下这三个选项。
1. “在新窗口中”,其对应 -N 或 --new-window 参数。当我们通过 sudo 执行命令后,将会启动带有提权的 sudo 会话进程,在经过用户确认后即可提权运行后续的指令,并以新窗口形式运行。
2. “禁用输入”,其对应 --disable-input 参数。即执行的命令将基于当前窗口运行 UAC 提权的进程,但其输入句柄将会被关闭,避免已经提升的进程从当前窗口接收指令。
3. “内联”,其对应 --inline 参数。意思就是直接将当前窗口进程进行提权,与 2 类似但将已提权模式继续处理后续的输入。
三个选项的逻辑很清晰,但我们在实际运用中会发现,必须先将 sudo 配置为“内联”或“禁用输入”后,才能使用对应的参数选择性的去执行(运行模式由安全级别低向高排序)。否则,将会提示 无法在计算机上以高于XXXX模式的模式运行 !(PS:那么到底是要临时安全还是始终安全呢?!)
sudo 更多的参数可执行运行命令获取,不再复述。此外,我们还需要注意的是 sudo 不具有 runas 命令的功能,要运行 sudo 必须是管理员级别的账号,普通账号在执行 sudo 后将提示“不允许你运行 sudo”。
sudo 目前已经支持通过 GPO 配置,路径是“计算机配置 - 管理模板 - 系统 - 配置 sudo 命令的行为”。
官方文档: Sudo for Windows