在 Wayland 上以 Root 身份运行 VSCode

在 Wayland 上以 Root 身份运行 VSCode

正如我从这里的几个帖子中读到的。我不应该以 root 身份运行 VSCode,因为这很危险。但每次我按CTRL+时S,我都需要转到右下角并单击以管理员身份运行并输入我的密码。不只是一次,而是每次我保存文件时。即使是我 2 秒前刚刚保存过的同一个文件。

我将文件保存在桌面上的文件夹中:~/Desktop/github

为什么会发生这种情况?我该如何避免?

答案1

检查该文件的所有权和权限。

ls -l

它将为您提供文件列表、其权限和所有权。以下是示例: 文件列表屏幕截图。如果您的用户没有所有权,您可以使用以下方法更改它:

sudo chown -R $USER:$USER FOLDER_NAME

或者,如果你属于某个用户组(例如www-数据)并且您的用户组拥有文件,但您无法进行更改,您必须通过执行以下操作将权限级别更改为 775:

sudo chmod 775 FILE_NAME

答案2

您不拥有目录“github”

打开终端

cd Desktop
chown $USER:$USER github

... 您可以将文件保存在该目录中。但请先考虑一下:是谁或什么创建了它?也许您不应该使用该目录?它因特定原因而被称为 github 吗?我假设 VSCode 会使用“Documents”。

答案3

在 Wayland 上以 Root 身份运行 VSCode

如果您的发行版使用 Wayland 而不是 X11,则以 sudo 形式运行 vscode 将不起作用。

经过大量研究后,我想到唯一的解决方案是创建一个使用已知和可接受的解决方法 xhost root 的 bash 脚本。

将以下脚本保存到 /home/your-username/bin(如果不存在则创建),同时确保将该文件夹添加到路径中。我将包含脚本的文件命名为wsudo代码

注意:此脚本假定你的 root vscode 的用户数据目录是/home/your-username/.vscode-root

#!/bin/bash
#small script to enable root access to x-windows system 
xhost +SI:localuser:root
sudo code --user-data-dir=/home/$USER/.vscode-root --verbose $1 > /dev/null 2>&1
#disable root access after application terminates
xhost -SI:localuser:root
#print access status to allow verification that root access was removed
xhost

用法

wsudocode [target file or directory path]

笔记

由于某些看起来很荒谬的原因,我只能使用 --verbose 选项以这种方式让 vscode 以 sudo 身份运行,这就是为什么它在脚本中的原因。

还要记住,当以 root 身份运行时,VSCode 将以 root 权限保存所有文件,这可能是无意的,因此如果是这种情况,您必须更改已保存文件的所有权和可能的权限。

改编自 jeepr 的通用解决方案https://www.reddit.com/r/Fedora/comments/5eb633/solution_running_graphical_app_with_sudo_in/

答案4

您需要从应用程序文件夹中删除只读权限,如下所示:

sudo chmod -R 7777 <project_folder_name>

相关内容