Sudo for Windows

Sudo for Windows 是用户(以管理员身份)直接从 Windows 上的未提升权限的控制台会话运行提升的命令的一种新方式。

阅读公告,其中包括演示视频,并深入了解 Sudo for Windows 的工作原理。

先决条件

Sudo for Windows 命令在 Windows 11 版本 24H2 或更高版本中可用。 (检查 Windows 更新)。

注意

Sudo for Windows 尚不适用于 Windows 10,但可能会在未来推出。

如何启用 Sudo for Windows

要启用 Sudo for Windows,请打开 Settings > For Developers,并将“启用 sudo”设置为“开”

启用 Sudo

警告

在某些配置中启用时,Sudo for Windows 可用作特权向量的潜在升级。 在计算机上启用 sudo 命令时,应确保注意安全注意事项

如何配置 Sudo for Windows

Sudo for Windows 目前支持三种不同的配置选项。 可以从菜单或使用命令行以编程方式设置 Settings > For Developers 配置。 配置选项包括:

  • 在新窗口中 (forceNewWindow):forceNewWindow 配置选项是 Sudo for Windows 的默认配置选项。 在此配置中使用 sudo 在新窗口中运行命令。 这类似于 runas /user:admin 命令的行为。

  • 输入已关闭 (disableInput):disableInput 配置选项将在当前窗口中运行提升的进程,但输入句柄关闭。 这意味着提升的进程将无法接收来自当前控制台窗口的输入。 这对于希望以管理员身份运行命令,但不希望命令接收来自当前控制台窗口的输入的方案非常有用。 此配置选项inline为配置选项提供了一定的便利,同时缓解了一定的相关安全风险

  • 内联 (normal): normal 配置选项与 sudo 在其他操作系统上的行为最为相似。 此配置将在当前窗口中运行提升的进程,并且该进程将能够从当前控制台会话接收输入。 这对于希望以管理员身份运行命令,同时希望允许命令接收来自当前控制台窗口的输入的方案非常有用。 此配置选项提供了最大的便利,但仅在熟悉关联的安全风险时才选择此选项。

可以从 Settings > For Developers 菜单中选择这些配置,也可以在提升的命令行(管理控制台)中以编程方式更改配置,并使用:

  • sudo config --enable <configuration_option>

<configuration_option> 更新为 forceNewWindow, disableInputnormal

如何使用 Sudo for Windows

要使用 Sudo for Windows,只需将 sudo 追加到要以管理员身份运行的命令。 例如,要以管理员身份运行 netstat -ab,需要在控制台窗口中运行 sudo netstat -ab

由于 sudo 提升目标进程以使用管理员级别权限运行,因此系统会打开提示,要求你确认是否要继续。

安全注意事项

输入关闭 (inputClosed) 或内联 (normal) 配置中运行 sudo 存在相关风险。 恶意进程可能试图使用未提升的 sudo.exe 和提升的 sudo.exe 进程建立的连接来驱动提升的进程。

inputClosed 配置选项通过关闭输入句柄,来缓解风险。 断开输入句柄与当前控制台窗口的连接意味着未提升的进程无法将输入发送到提升的进程。

inline 配置选项在当前窗口中运行提升的进程,并且该进程能够从当前控制台会话接收输入。 在此配置中,未提升的进程可以在相同的控制台窗口中向提升的进程发送输入,或者从当前窗口的输出中获取信息。

常见问题解答

Sudo for Windows 与现有 runas 命令有何不同?

sudo 命令提供了一种从当前未提升的命令行上下文中以管理员身份快速提升命令的方法,并且对于来自其他操作系统的一些用户来说很熟悉。 runas 命令提供了一种以任何用户身份运行程序的方式,包括管理员(若你选择的话)。 此时,Windows 上的 sudo 命令不支持以其他用户身份运行程序。 sudorunas 之间的其他主要区别包括:

  • runas 允许以其他用户(包括但不限于管理员)的身份运行程序。 此功能包含在 sudo 命令的未来路线图中,但当前还没有。

  • sudo 允许(以管理员身份)快速提升进程:

    • 可以选择在一个类似于 runas 管理员流程的新窗口中执行此操作。
    • 可以选择使用 disableInputnormal 配置选项将提升的进程连接到当前控制台窗口。 runas 不支持此操作。
  • runas 在命令行中提示用户输入密码。

  • sudo 只能通过用户帐户控制 (UAC) 安全功能提升,该功能旨在使用验证提示保护操作系统免受未经授权的更改。

应考虑特定的用例,并计划使用最能满足需求的命令。 还应考虑在 inputClosednormal 模式中运行 sudo 的安全影响。 建议使用默认 forceNewWindow 配置选项,除非熟悉并适应与其他 sudo 配置相关的风险。

Sudo for Windows 开源存储库

Sudo for Windows 是开源的,欢迎大家参与进来以及提供反馈。 请访问 GitHub,查找 Sudo for Windows 的源代码。

其他功能

如果正在寻找 Sudo for Windows 未提供的其他功能,请访问 Gerardo Grignoli 的 gsudoGerardo Grignoli,其中包含许多附加功能和配置选项,也可以查阅社区中的其他解决方案。