编译丨诺亚
出品 | 51CTO技术栈(微信号:blog51cto)
最近有消息传出,sudo命令即将登陆Windows。
Sudo(超级用户执行)长期以来一直是类Unix操作系统中的一种强大管理工具。其核心功能是允许一个普通用户在部分命令中,以超级用户的权限(通常为管理员权限)运行程序。
虽然Windows系统早就提供了“以管理员身份运行”的选项,然而与启动一个提升权限的控制台会话相比,sudo提供了一种更为精细的权限管理方式。用户可以选择仅针对单个命令提升权限。
图片
对于熟悉Linux和macOS中sudo功能的用户来说,这一更新无疑值得期待。
这一举动也再次彰显了微软在操作系统开发中对Linux元素日益增长的接纳和融合。昔日曾经视Linux为“癌症”的微软如今已彻底重塑自我,为了持续推动跨平台兼容性和改善用户体验,Windows系统向Linux特性靠拢的趋势在持续加强。
1、sudo如何进入Windows
微软打算将该项目作为开源项目在GitHub上发布。用户可以通过Windows设置页面或命令行来启用这一功能。
不久之后,如果你正在运行Windows 11操作系统,你将能够在Windows终端中输入类似这样的命令:
图片
当然,这是Linux中经典的命令。当你运行`sudo[command]`时,将会出现熟悉的Windows用户账户控制(UAC)弹窗,询问你是否希望提升权限。如果你选择确认,那么接下来的命令语句将以管理员身份执行。
在上述示例中,如果用户(非管理员)以常规方式打开一个Windows终端,通常无法在这里使用`sudo`命令。然而这一切都在最新的Windows 11内部预览版(构建版本26052)中发生了改变,该版本将sudo作为可选的开发者功能包含其中。
假设你已加入Windows Insider计划,你可以通过Windows设置 > 开发者选项页面启用sudo功能。或者,你也可以启动一个提升权限的Windows终端会话,并使用以下命令来激活sudo:
图片
选项`sudo`赋予你如同在Linux系统中一样的完全权限。另外,你还可以选择更安全的选项,例如`sudo disableInput`,该选项不允许提升权限后的进程接收任何进一步的用户输入;或者使用`sudo forceNewWindow`,它会在一个新的终端窗口中运行新提升权限的进程。
这两种方法都能够减轻一些潜在的安全漏洞风险,但它们改变了`sudo`的工作方式,使其并不完全与Linux中的实现相同。
微软已经暗示可能会将`sudo`功能回溯移植到Windows 10上。因此,这个新特性有望成为即使在旧版PC上的开发者也能享用的标准选项。这样一来,在未来,无论是Windows 10还是Windows 11,开发人员都可能能够在Windows操作系统中享受到类似Linux的`sudo`权限管理体验。
2、我们真的需要sudo吗?
当然有人也会质疑,这一更新真的有意义吗?
如果没有sudo,Windows用户可以使用`runas`命令的某种形式来获取管理员权限——要么在命令行中输入,要么通过右键点击开始菜单中的Windows终端图标并选择“以管理员身份运行”。
所以从技术上讲,sudo并未提供此前无法实现的新功能。它只是允许你采用传统Linux的方式来操作。不过,对于真正的Linux用户来说,这一点尤其便利,无论你是花费大量时间配置服务器或云环境,还是喜欢在该操作系统上进行开发。使用sudo就好比是在Linux中输入`ls`而非`dir`,或者输入`cat`而非`type`,这样无需额外的认知切换就能使用自己最熟悉的命令方式。
另一个不那么明显但同样重要的方面是,像sudo这样的添加功能有助于Windows开发者更加熟悉Linux的约定。过去也有开发者提到,逐渐偏好于使用Linux命令而非仅限Windows的原生Shell命令。因为对Linux命令越熟悉,在下次实际在Linux提示符下工作时(比如在AWS这类云端环境中),就越不容易感到迷茫和孤立。
3、微软与Linux:爱恨交织的历史
如果你对微软拥抱Linux还比较陌生,那你一定要了解一下WSL(适用于Linux的Windows子系统),这是一个随Windows一起发布的Linux内核,支持各种有趣的互操作性场景。例如,你可以直接在虚拟Linux文件系统中使用VS Code进行开发,并在Docker中运行Linux容器。“每个Windows开发者都需要一点Linux”并非一句简单的调侃。
经过二十多年时间,微软内部曾经敌视Linux的做法已经被彻底摒弃。很明显,如果没有这一转变,微软可能只会成为科技历史上的一个注脚。而在当前的时间线上,微软对Linux的拥抱已经越来越彻底,比如用JavaScript构建全球最受欢迎的代码编辑器(VS Code),将庞大的.NET项目重构为跨平台且开源,当然还有——悄悄将完整的Linux内核嵌入到Windows的核心中。
参考链接:
https://www.theregister.com/2024/02/08/windows_11_sudo/
https://medium.com/young-coder/the-linuxification-of-windows-continues-0cb889255b97