正如我从这里的几个帖子中读到的。我不应该以 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>