【问题标题】:VSCode in WSL: how to sudo a root file so I can edit itWSL中的VSCode:如何对根文件进行sudo以便我可以编辑它
【发布时间】: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身份运行,所以我还在寻找另一种解决方案。

【问题讨论】:

标签: visual-studio-code sudo windows-subsystem-for-linux vscode-remote


【解决方案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 是最好的答案。绝对需要更多的支持
    猜你喜欢
    • 2013-12-23
    • 2019-05-22
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2015-11-20
    • 2015-03-27
    • 1970-01-01
    相关资源
    最近更新 更多