[英]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.