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

Posted

技术标签:

【中文标题】WSL中的VSCode:如何对根文件进行sudo以便我可以编辑它【英文标题】:VSCode in WSL: how to sudo a root file so I can edit it 【发布时间】:2020-03-17 16:57:03 【问题描述】:

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

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

如果我打开没有sudo 的根文件,我将无法编辑它(预期): $ 代码 /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身份运行,所以我还在寻找另一种解决方案。

【问题讨论】:

真的很惊讶这还没有一个干净的解决方案...... 这是一种解决方案。 ***.com/a/65963974/12160919。总之,需要修改/etc/sudoers配置文件。 【参考方案1】:

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

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

【讨论】:

sudo chown -R $USER:$USER /path/to/group 为我工作【参考方案2】:

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

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

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

【讨论】:

像魅力一样工作:)【参考方案3】:

目前,我能够做到这一点的唯一方法是使用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 -&gt; Preferences -&gt; Settings

3。启动 VSCode rmate 服务器

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

4。编辑您的特权文件

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

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

【讨论】:

【参考方案4】:

通过 VS Code 以 root 身份登录

不知道这是否是最好的方法,但它对我有用。请注意,这应该只用于首先只有 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身份进入。你现在应该可以做任何事情了。

【讨论】:

谢谢,但我不想让root SSH 访问 WSL。【参考方案5】:

在powershell中输入这个并按'Enter'

ubuntu config --default-user root

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

【讨论】:

@Binarify 谢谢,但我不想默认以root 运行。我真的在寻找一些方法来做通常的“sudo x”。 不是一个好的解决方法【参考方案6】:

设置环境变量:

export VISUAL="code -nw"

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

sudo -e file

它会自动复制文件,当你关闭编辑器时,将它复制回来。

【讨论】:

我似乎无法让它工作。 sudo -e file 只是默认为我拥有的 EDITOR env var。完全按照您的步骤操作:i.imgur.com/BAQBAGC.jpg。还尝试添加到code 的完整路径并将SUDO_EDITOR 设置为code。我想你真的试过这个?我想不出我的系统有什么不同;我在 WSL 2 上。 您必须使用和参数“code -w”。文档说优先级是 SUDO_EDITOR > VISUAL > EDITOR。我每天都用它。 这行得通,IMO 是最好的答案。绝对需要更多的支持

以上是关于WSL中的VSCode:如何对根文件进行sudo以便我可以编辑它的主要内容,如果未能解决你的问题,请参考以下文章

Xdebug 3.0 WSL2 和 VSCode - 有效的配置

VScode 无法将文件保存在我的 WSL2 主文件夹中

WSL2_07 VSCode配置并编写Python程序

vscode wsl php

在WSL中使用code .启动VSCode失败解决方法

如何在 Ubuntu on Windows (WSL) 上为我的 VS Code 终端使用 Bash?