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

Haw*_*ker 29 sudo visual-studio-code windows-subsystem-for-linux vscode-remote

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

如何使用 sudo 和 VSCode 打开根拥有的文件进行编辑?(无需以 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
Run Code Online (Sandbox Code Playgroud)

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

kir*_*nee 19

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

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

Run Code Online (Sandbox Code Playgroud)


Bar*_*ino 14

设置环境变量:

export VISUAL="code -nw"
Run Code Online (Sandbox Code Playgroud)

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

sudo -e file
Run Code Online (Sandbox Code Playgroud)

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

  • 您必须使用参数“code -w”。文档说优先级是 SUDO_EDITOR > VISUAL > EDITOR。我每天都用它。 (2认同)

小智 12

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

sudo chown -R <user-name> <directory-name>
Run Code Online (Sandbox Code Playgroud)

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


Lan*_*nce 9

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

1. 在 WSL VM 上安装 rmate

sudo wget -O /usr/bin/rmate https://raw.githubusercontent.com/aurora/rmate/master/rmate
sudo chmod a+x /usr/bin/rmate
Run Code Online (Sandbox Code Playgroud)

我在这里使用 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 实例并打开终端。如果您已正确完成所有操作,即使您不是 root 用户,您现在也应该能够在编辑器中使用 sudo 权限编辑文件。

sudo rmate /etc/profile.d/custom-profile.sh
Run Code Online (Sandbox Code Playgroud)


Bin*_*ify 6

在 powershell 中输入此内容并按“Enter”

ubuntu config --default-user root
Run Code Online (Sandbox Code Playgroud)

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

  • @Binarify 谢谢,但我不想默认以“root”身份运行。我真的在寻找某种方法来执行通常的“sudo x”。 (10认同)
  • 这不是一个好的解决方法 (4认同)

Pav*_*nes 5

通过 VS Code 以 root 身份进行 SSH

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

1.在WSL上安装ssh-server

sudo apt install ssh
Run Code Online (Sandbox Code Playgroud)

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

PermitRootLogin yes里面编辑或添加/etc/ssh/sshd_config

3.重启ssh服务器

sudo systemctl restart ssh
Run Code Online (Sandbox Code Playgroud)

4. 在 VS Code 中连接到 WSL

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

  • 谢谢,但我不想允许“root” SSH 访问 WSL。 (6认同)

Ame*_*oui 5

如果您从 Windows 商店安装 Ubuntu,则需要在 Windows 命令提示符下运行的命令是

ubuntu config --default-user root
Run Code Online (Sandbox Code Playgroud)

或者

ubuntu1804 config --default-user root
Run Code Online (Sandbox Code Playgroud)

或者

ubuntu2004 config --default-user root
Run Code Online (Sandbox Code Playgroud)

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

重启LxssManager服务

sc stop LxssManager
sc start LxssManager
Run Code Online (Sandbox Code Playgroud)