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


11

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

我在网上找到了解决方案

  umount /path/to/.gvfs
  rm -rf .gvfs

但它只能暂时解决问题。

看来,我有两个安装的情况下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)

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

  sudo chown -R $USER:www-data

你能帮我解决吗?

编辑:卸载后,我/run/user/1000/gvfs不会收到该错误。


1
这就是为什么您不应该sudo使用图形程序运行的原因之一。
muru


@muru感谢您的链接,它很好地解释了为什么我不应该运行sudo打开图形应用程序。但是我仍然想知道为什么我开始收到该错误消息
kenn

在链接的问题中引用最上面的答案:“有时会导致配置文件由root拥有,因此您无法访问(当您以后以自己而非root身份运行程序时)。”
muru 2014年

1
我怀疑这种特殊的情况可能实际上涉及到运行直sudo的图形程序。用户.gvfs文件夹上的权限/访问一直很有趣,并且(对我们中的某些人而言)令人惊讶
伊利亚·卡根

Answers:


9

使用来运行图形应用程序sudo有时可能会导致类似的问题。

说明

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

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

最好的解决方案是什么?

还有一种选择:gksudo

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

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

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

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

我该如何解决该问题?

您需要在主目录中找到根目录拥有的文件和目录,然后将其删除。在我看来,删除它们比更改它们的所有权要好,因为它们不是针对您的用户,而是针对根用户,因此,如果您仅更改所有权,可能会产生意想不到的影响。当然,您可以备份它们,以防日后决定要添加一些东西。

要在主目录中查找根目录拥有的文件,请执行以下操作:

find ~ -user root

如果某些应用程序仍然有问题(以您的用户身份运行),请尝试重新启动以清除故障,/tmp然后一切仍在运行。有时,某些应用程序可能损坏了它们现有的配置文件,需要您删除其主目录中的所有配置,但希望对于许多应用程序而言并非如此。


谢谢您的解释。我该如何解决?还是每个人都和我有同样的问题?
肯恩2014年

3
通过在运行图形程序时使用gksudo代替sudo
thomasrutter 2014年

因此,我的系统没有错。
肯恩2014年

2
是的,除了您现在可能在主目录中拥有不属于根所有者的根拥有的文件之外。
thomasrutter 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.