每当我以 root 身份在终端中运行应用程序(例如sudo gedit /etc/default/varnish
)时,随后当我打开另一个终端时,我会在终端的第一行收到“ls: cannot access .gvfs: Permission denied”错误。
我在网上找到了解决方案
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
没有收到该错误。
运行图形应用程序
sudo
有时会导致这样的问题。解释
sudo
以超级用户权限运行该程序(如以 root 身份运行),但该程序仍将当前主目录视为您的主目录。因此,当软件写入其配置文件时,它最终会在您的主目录中创建root用户拥有的文件。您最终会得到您自己无法编辑或删除的文件,并且软件会运行,因为您也无法修改它,从而导致更多问题。
什么是最好的解决方案?
还有一个选择:
gksudo
。sudo 的这种变体将设置环境变量,例如主目录,以这种方式使以 root 身份运行图形应用程序更加安全,并且不会混淆程序以在您的主目录中创建 root 拥有的文件。
为什么这会影响图形应用程序?
这不仅会影响图形应用程序,也不会影响所有图形应用程序。它会影响在当前用户的主目录中存储配置的应用程序。这在图形应用程序中更为常见。
有时应用程序将能够检测它们是否使用 sudo 运行并相应地调整它们的行为,但这在通常不希望使用 sudo 运行的图形应用程序中并不常见。
我该如何解决这个问题?
您需要在您的主目录中找到 root 拥有的文件和目录并将它们删除。在我看来,删除它们比更改它们的所有权更好,因为它们不是为您的用户准备的,而是为 root 用户准备的,因此如果您只是更改所有权,可能会产生意想不到的效果。您当然可以备份它们,以防您以后决定在其中添加一些内容。
要在您的主目录中查找 root 拥有的文件:
如果您仍然无法使用某些应用程序(以您的用户身份运行),请尝试重新启动以清除
/tmp
所有仍在运行的应用程序。有时一些应用程序可能已经损坏了它们现有的配置文件,需要您删除它们在您的主目录中的所有配置,但希望大多数应用程序不会出现这种情况。只需授予用户权限即可
.gvfs/
修复它。