繁体   English   中英

WSL中的VSCode:如何对根文件进行sudo以便我可以编辑它

[英]VSCode in WSL: how to sudo a root file so I can edit it

WSL v.1 -- VSCode v1.40.1(使用“远程 - WSL”扩展 40.3)

如何使用 sudo 和 VSCode 打开 root 拥有的文件进行编辑? (不以root身份运行)

如果我打开没有sudo的根文件,我将无法编辑它(预期): $ code /etc/profile.d/custom-profile.sh $

在此处输入图像描述

但是,如果我尝试对文件进行sudo code ,我会得到:

$ sudo code /etc/profile.d/custom-profile.sh
[sudo] password for xxxx:
sudo: code: command not found

Binarify 下面的回答表明我可以将默认用户切换到root ,但我绝对不想以 root 身份运行,所以我仍在寻找另一种解决方案。

您可以拥有要编辑的文件,然后将其归还所有权

sudo chown myuser /path/to/file
code /path/to/file
sudo chown root /path/to/file

我遇到了同样的错误,编辑后我无法在 vscode 中保存任何文件,并通过以下命令解决:

sudo chown -R <user-name> <directory-name>

它对我有用,希望它也对你有用。 谢谢

目前,我能够实现这一目标的唯一方法是使用rmate

1. 在你的 WSL 虚拟机上安装 rmate

sudo wget -O /usr/bin/rmate https://raw.githubusercontent.com/aurora/rmate/master/rmate
sudo chmod a+x /usr/bin/rmate

我在这里使用的是 Debian Buster WSL,但是您可以根据您的操作系统或偏好将/usr/bin替换为 $PATH 中的适当文件夹。

2.安装Remote VS Code插件

在此处输入图像描述

确保在 WSL 上启用扩展:添加插件后。

这是我配置远程 VS Code 插件的方式

File -> Preferences -> Settings

在此处输入图像描述

3.启动VSCode rmate服务器

按 F1 并运行搜索Remote: Start Server命令。

在此处输入图像描述

4. 编辑您的特权文件

启动您的 WSL 实例并打开一个终端。 如果您已正确完成所有操作,您现在应该可以在编辑器中使用 sudo 权限编辑文件,即使您不是 root 用户。

sudo rmate /etc/profile.d/custom-profile.sh

设置环境变量:

export VISUAL="code -nw"

然后你可以像这样编辑任何文件:

sudo -e file

它会自动制作文件的副本,并在您关闭编辑器时将其复制回来。

SSH 通过 VS Code 以 root 身份登录

不知道这是否是最好的方法,但它对我有用。 请注意,这应该只用于首先只有 root 有权访问的文件。 我认为保存的文件将归根用户所有。 使用它可以快速更改某些设置,但不能编写普通用户可以完成的代码。

1. 在 WSL 上安装 ssh-server

sudo apt install ssh

2.允许以root身份远程登录。

/etc/ssh/sshd_config中编辑或添加PermitRootLogin yes

3.重启ssh服务器

sudo service ssh stop
sudo service ssh start

4.在VS Code中连接WSL

Ctrl + Shift + P -> Remote SSH: Add new ssh host -> root@127.0.0.1接受所有指纹和东西,你以 root 身份进入。 你现在应该可以做任何事情了。

在 powershell 中输入,然后按“Enter”

ubuntu config --default-user root

然后您将使用 root 用户登录 wsl,您现在可以做任何事情

如果有可能从 WSL 版本 1 升级到 WSL 版本 2,那么您也许可以使用setfacl 我也刚刚使用 WSL 1 进行了测试,遗憾的是不支持 ACL。

为什么使用setfacl而不是chownchmod 要保留给定的chownchmod Linux 权限(因为对于在不同系统用户下运行的不同服务,您可能有不同内容的不同文件夹),例如使用 Ubuntu 20.04 (使用 WSL2 运行),同时给自己一些打开和编辑给定 WSL2 文件夹中的文件(或仅编辑特定文件),您可能可以使用getfaclsetfacl

因此,您可以尝试这样的方法来递归( -R )修改( -m )用户$USER./path-to-folder权限,以包括读取、写入和执行( rwx )权限。

sudo setfacl -R -m u:$USER:rwx ./path-to-folder
cd ./path-to-folder
code .

然后您可以提前 go 并从 Visual Studio Code 更改文件夹中的一些文件,并且chownchmod权限将保持不变。

当然,您也可以使用setfacl更改单个文件的 ACL 权限。

我已经使用 WSL2 和 Ubuntu 20.04 成功测试了这个。 我不知道是否每个发行版默认都支持 ACL 权限。 但是 Ubuntu 20.04 似乎支持getfaclsetfacl

如果从 Windows 商店安装 Ubuntu 存储命令,则需要在 windows 命令提示符下运行

ubuntu config --default-user root

或者

ubuntu1804 config --default-user root

或者

ubuntu2004 config --default-user root

(注意:根据您安装的版本,这可能是 ubuntu1804.exe 或 ubuntu2004.exe)

重启 LxssManager 服务

sc stop LxssManager
sc start LxssManager

在 Windows PC 上,安装Vscode

对于新的WSL Linux发行版,例如Ubuntu ,请打开WSL Linux Z2565291C98B1ZE484

键入code. (注意尾随空格和点)

将调用Windows Vscode程序来编辑您的Linux用户配置文件。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM