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 -> Preferences -> 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以便我可以编辑它的主要内容,如果未能解决你的问题,请参考以下文章