ls: 无法访问 .gvfs: 权限被拒绝

ken*_*enn 12 gnome-terminal gvfs

每当我以 root 身份(例如sudo gedit /etc/default/varnish)在终端中运行应用程序时,随后当我打开另一个终端时,我都会在终端的顶行收到“ls:无法访问 .gvfs:权限被拒绝”错误。

我在网上找到了解决方案

  umount /path/to/.gvfs
  rm -rf .gvfs
Run Code Online (Sandbox Code Playgroud)

但它只是暂时解决问题。

我的系统中似乎有两个安装的gvfs实例

  $ sudo mount |grep gvfs
    gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=33)
    gvfsd-fuse on /home/****/.gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
Run Code Online (Sandbox Code Playgroud)

我不知道它是否与几个月前有关,我不得不更改我的主文件夹中的权限,例如

  sudo chown -R $USER:www-data
Run Code Online (Sandbox Code Playgroud)

请你帮我修好吗?

编辑:卸载后我/run/user/1000/gvfs没有收到该错误。

tho*_*ter 11

运行图形应用程序sudo有时会导致这样的问题。

解释

sudo以超级用户权限运行程序(如以 root 身份运行),但程序仍将当前主目录视为您的主目录。

因此,当软件写入其配置文件时,它最终会在您的主目录中创建由root用户拥有的文件。您最终会得到您自己无法编辑或删除的文件,并且您也无法修改它的软件正在运行,从而导致更多问题。

最好的解决方案是什么?

有一个替代方案:gksudo

sudo 的这种变体将设置环境变量,例如主目录,以这样的方式使以 root 身份运行图形应用程序更安全,并且不会混淆程序以在您的主目录中创建 root 拥有的文件。

为什么这会影响图形应用程序?

这不仅影响图形应用程序,也不会影响所有图形应用程序。它会影响在当前用户的主目录中存储配置的应用程序。这在图形应用程序中更为常见。

有时应用程序将能够检测到它们是否使用 sudo 运行并相应地调整它们的行为,但这对于通常不希望使用 sudo 运行的图形应用程序并不常见。

我该如何解决问题?

您需要在您的主目录中找到 root 拥有的文件和目录并删除它们。在我看来,删除它们比更改它们的所有权要好,因为它们不是为您的用户设计的,而是为 root 用户设计的,因此如果您只是更改所有权,可能会产生意想不到的效果。您当然可以备份它们,以防您以后决定在其中包含您想要的东西。

要在您的主目录中查找 root 拥有的文件:

find ~ -user root
Run Code Online (Sandbox Code Playgroud)

如果某些应用程序仍然存在问题(以用户身份运行),请尝试重新启动以清除/tmp所有仍在运行的应用程序。有时,某些应用程序可能损坏了它们现有的配置文件,并需要您删除主目录中的所有配置,但希望许多应用程序不会出现这种情况。

  • 通过在运行图形程序时使用 `gksudo` 而不是 `sudo`。 (3认同)
  • 是的,除了您现在在主目录中拥有不应该是 root 拥有的文件的可能性之外。 (2认同)