微软将在Windows 11 Build 26052 预览版引入新功能,将原生支持 Sudo 命令

微软已经在Windows 11 预览版 26052中引入了新功能Sudo for Windows。对于熟悉macOS和Linux系统的用户来说,sudo命令一定不会陌生。

sudo命令允许用户执行需要管理员(root)权限的命令,而无需切换到root用户。用户只需在命令前加上sudo,然后输入自己的密码,就可以以更高权限运行该命令。

在本文中,我们将详细介绍Sudo for Windows如何启用与配置。

如何启用Sudo for Windows

要为Windows启用Sudo,请打开系统设置,进入系统-开发者选项-启用Sudo

您也可以通过在提升的控制台会话中运行以下命令来启用Sudo for Windows:

sudo config --enable <configuration_option>

当你以管理员身份打开命令提示符或PowerShell时,它就被称为“提升的控制台”,因为在这个环境中,你可以执行那些需要更高权限的命令,比如安装软件、修改系统设置、访问受保护的文件夹等。

如何在Windows上配置Sudo

Sudo for Windows目前支持三种不同的配置选项:在新窗口中打开、输入关闭和内联。

  • In a new window (在新窗口中打开)
  • Input closed (输入关闭)
  • Inline (内联)

要更改配置选项,请打开系统设置,进入系统-开发者选项-启用Sudo,下拉菜单中选择

您也可以通过在提升的控制台会话中运行以下命令来启用Sudo for Windows:

sudo config --enable <configuration_option>

在此配置中,Sudo for Windows将打开一个新的提升控制台窗口,并在该窗口中运行命令。这是启用sudo时的默认配置选项。例如,如果运行:

sudo netstat -ab

将打开一个新窗口,命令将在该窗口中运行:

在此配置中,Sudo for Windows将在当前窗口中启动一个提升权限的进程,但这个新进程不会接收来自用户的任何输入。换句话说,如果一个程序在提升权限后还需要用户进行额外的操作或输入,那么这种配置就不适合它。

简单来说,如果你尝试使用这种配置来运行一个程序,并且这个程序在启动后还需要你输入一些信息(比如密码或其他数据),那么这个程序可能无法正常工作,因为它无法接收你的输入。

这种配置允许你在Windows版本的Sudo中运行的程序与你的命令行界面进行交互,就像在其他操作系统上使用sudo一样。程序可以接收你输入的命令或数据,并且它的输出(无论是正常的结果还是错误信息)都会显示在你的命令行窗口中。

它是如何工作的?

当使用sudo从命令行提升进程权限时,将出现一个UAC(用户帐户控制)对话框,要求用户确认提升操作:

一旦用户确认提升,进程将根据用户选择的配置选项进行提升。

您可以通过在控制台中运行sudo -h来查看sudo命令的可选参数。

当你使用这种配置运行 sudo 命令时,它会打开一个新的、具有提升权限的控制台窗口,并在那个窗口中执行你的命令。这个新窗口的环境(包括工作目录和环境变量)会和当前窗口保持一致。这种运行方式类似于使用 runas 命令来以其他用户身份运行程序。

在这些配置下,sudo.exe 会启动一个新的进程,这个进程有更高的权限。同时,原来的 sudo.exe(没有提升权限的那个)会和这个新的高权限进程建立连接。这样,信息就可以在这两个 sudo 进程之间传递了。

特别的是,原来的 sudo 进程会把它的控制台“把手”交给新的高权限进程,这样新的进程就可以读取原来的进程的输入,并且把输出写回原来的进程。但是,如果 sudo 被设置为“输入关闭”模式,那么新的高权限进程就不能接收来自控制台的输入了,也就是说它不能直接从用户那里获取输入信息。

当你在使用“内联”或“输入关闭”配置运行sudo时,了解其中的安全问题是非常重要的。有时候,一个普通的进程可能会驱动一个权限更高的进程,这可能会带来风险。但在“输入关闭”配置下,这种风险会降低,因为权限更高的进程不能读取用户的输入信息。

微软计划未来几个月内扩展Sudo for Windows的文档,并分享更多关于在“内联”配置下运行sudo的安全性细节。

此外,微软还宣布将这个项目开源在GitHub上。目前,他们正努力在GitHub仓库中添加更多关于该项目的信息,并将在未来几个月分享更多计划细节。

0

评论0

没有账号?注册  忘记密码?