簡體   English   中英

WSL中的VSCode:如何對根文件進行sudo以便我可以編輯它

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

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

設置環境變量:

export VISUAL="code -nw"

然后你可以像這樣編輯任何文件:

sudo -e file

它會自動制作文件的副本,並在您關閉編輯器時將其復制回來。

SSH 通過 VS Code 以 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 身份進入。 你現在應該可以做任何事情了。

在 powershell 中輸入,然后按“Enter”

ubuntu config --default-user root

然后您將使用 root 用戶登錄 wsl,您現在可以做任何事情

如果有可能從 WSL 版本 1 升級到 WSL 版本 2,那么您也許可以使用setfacl 我也剛剛使用 WSL 1 進行了測試,遺憾的是不支持 ACL。

為什么使用setfacl而不是chownchmod 要保留給定的chownchmod Linux 權限(因為對於在不同系統用戶下運行的不同服務,您可能有不同內容的不同文件夾),例如使用 Ubuntu 20.04 (使用 WSL2 運行),同時給自己一些打開和編輯給定 WSL2 文件夾中的文件(或僅編輯特定文件),您可能可以使用getfaclsetfacl

因此,您可以嘗試這樣的方法來遞歸( -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 更改文件夾中的一些文件,並且chownchmod權限將保持不變。

當然,您也可以使用setfacl更改單個文件的 ACL 權限。

我已經使用 WSL2 和 Ubuntu 20.04 成功測試了這個。 我不知道是否每個發行版默認都支持 ACL 權限。 但是 Ubuntu 20.04 似乎支持getfaclsetfacl

如果從 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

在 Windows PC 上,安裝Vscode

對於新的WSL Linux發行版,例如Ubuntu ,請打開WSL Linux Z2565291C98B1ZE484

鍵入code. (注意尾隨空格和點)

將調用Windows Vscode程序來編輯您的Linux用戶配置文件。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM