[英]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 。
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 中的适当文件夹。
确保在 WSL 上启用扩展:添加插件后。
这是我配置远程 VS Code 插件的方式
File -> Preferences -> Settings
按 F1 并运行搜索Remote: Start Server
命令。
启动您的 WSL 实例并打开一个终端。 如果您已正确完成所有操作,您现在应该可以在编辑器中使用 sudo 权限编辑文件,即使您不是 root 用户。
sudo rmate /etc/profile.d/custom-profile.sh
设置环境变量:
export VISUAL="code -nw"
然后你可以像这样编辑任何文件:
sudo -e file
它会自动制作文件的副本,并在您关闭编辑器时将其复制回来。
不知道这是否是最好的方法,但它对我有用。 请注意,这应该只用于首先只有 root 有权访问的文件。 我认为保存的文件将归根用户所有。 使用它可以快速更改某些设置,但不能编写普通用户可以完成的代码。
sudo apt install ssh
在/etc/ssh/sshd_config
中编辑或添加PermitRootLogin yes
sudo service ssh stop
sudo service ssh start
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
而不是chown
和chmod
? 要保留给定的chown
和chmod
Linux 权限(因为对于在不同系统用户下运行的不同服务,您可能有不同内容的不同文件夹),例如使用 Ubuntu 20.04 (使用 WSL2 运行),同时给自己一些打开和编辑给定 WSL2 文件夹中的文件(或仅编辑特定文件),您可能可以使用getfacl
和setfacl
。
因此,您可以尝试这样的方法来递归( -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 更改文件夹中的一些文件,并且chown
和chmod
权限将保持不变。
当然,您也可以使用setfacl
更改单个文件的 ACL 权限。
我已经使用 WSL2 和 Ubuntu 20.04 成功测试了这个。 我不知道是否每个发行版默认都支持 ACL 权限。 但是 Ubuntu 20.04 似乎支持getfacl
和setfacl
。
如果从 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.