如何在非管理员Windows账户的WSL发行版上执行需权限提升的操作?
如何在非管理员Windows账户的WSL发行版上执行需权限提升的操作?
我太懂你的烦恼了——在非管理员账户装的WSL发行版,碰到像--mount --bare这类需要提权的操作时,管理员账户居然看不到这个发行版,还不想给普通用户开管理员权限,确实挺棘手的。
先给你吃个定心丸:WSL发行版本来就是按用户安装的,每个用户的发行版数据都存在各自的用户目录下,管理员账户默认看不到,这是正常设计,不是你哪里配置错了。
下面给你几个不用给普通用户加管理员权限的可行方案:
方法一:直接挂载非管理员的WSL虚拟磁盘
管理员账户有权限访问非管理员用户目录下的WSL虚拟磁盘文件,步骤很简单:
- 先找到你的WSL发行版虚拟磁盘路径,一般在非管理员用户的目录里:
C:\Users\<你的非管理员用户名>\AppData\Local\Packages\<发行版对应包名>\LocalState\ext4.vhdx- 比如Ubuntu的包名通常是
CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc,你可以在Packages文件夹里找到对应发行版的目录
- 比如Ubuntu的包名通常是
- 切换到管理员账户,打开PowerShell或命令提示符,执行挂载命令:
wsl --mount C:\Users\<非管理员用户名>\AppData\Local\Packages\<发行版包名>\LocalState\ext4.vhdx --bare - 完成提权操作后,记得卸载磁盘:
wsl --unmount C:\Users\<非管理员用户名>\AppData\Local\Packages\<发行版包名>\LocalState\ext4.vhdx
方法二:导出再导入发行版到管理员账户
如果需要频繁在管理员账户操作这个发行版,可以把非管理员的发行版导出备份,再导入到管理员账户:
- 在非管理员账户的WSL里,执行导出命令(把发行版打包成tar文件,存到管理员能访问的路径,比如
C:\WSL-Backups):wsl --export <你的发行版名称> C:\WSL-Backups\my-distro.tar- 比如你的发行版叫
Ubuntu-22.04,就替换成这个名称
- 比如你的发行版叫
- 切换到管理员账户,导入这个发行版:
wsl --import <新发行版名称> <安装路径> C:\WSL-Backups\my-distro.tar- 比如新名称设为
Ubuntu-Admin,安装路径选C:\WSL\Ubuntu-Admin
- 比如新名称设为
- 之后在管理员账户里就能直接用这个导入的发行版执行提权操作了。注意:导入后的版本和原非管理员的发行版是独立的,要同步数据的话,可以复制重要文件或者用挂载共享。
方法三:用runas命令在非管理员账户直接启动管理员权限的WSL
如果你不想切换管理员账户,可以在非管理员账户用runas命令直接启动管理员权限的WSL并挂载自己的虚拟磁盘:
- 打开非管理员账户的命令提示符,执行:
runas /user:<管理员用户名> "wsl --mount C:\Users\<你的非管理员用户名>\AppData\Local\Packages\<发行版包名>\LocalState\ext4.vhdx --bare" - 输入管理员密码后,就会以管理员权限完成挂载操作了。
你可以根据自己的使用频率选最顺手的方法,完全不用给非管理员账户开管理员权限~
备注:内容来源于stack exchange,提问作者Albert Patton
相关产品推荐
相关产品推荐

