为什么即使以root身份运行也找不到读取的/ run / user / 1000 / gvfs?


34

有人可以告诉我我在做什么错,这是什么,或如何解决?我正在运行Fedora 18并显示错误

[root@servername /]# find . -name ngirc
find: `./run/user/1000/gvfs': Permission denied
[root@servername /]# 
[root@thinktank /]# pwd
/
[root@thinktank /]# ls -ltr ./run/user/1000
ls: cannot access ./run/user/1000/gvfs: Permission denied
total 0
d?????????? ? ?    ?      ?            ? gvfs
lrwxrwxrwx. 1 root root  17 May 28 12:30 X11-display -> /tmp/.X11-unix/X0
drwx------. 2 kal  kal  120 May 28 12:30 keyring-QjDw4b
drwx------. 2 kal  kal   40 May 28 12:30 gvfs-burn
drwx------. 2 kal  kal   60 May 28 12:30 krb5cc_5f0bcaf94f916d6b61696e2251a4dbb3
drwx------. 2 kal  kal   60 May 28 18:25 dconf

您没有做错任何事,我的建议是直接忽略该错误。如果那是不可接受的,那么如何在find命令行中排除GVFS安装点呢?
2013年

Answers:


33

您没有做错任何事,也没有要修复的东西。/run/user/$uid/gvfs或是GVFS~$user/.gvfsFUSE接口的安装点。GVFS是Gnome的虚拟文件系统实现,它允许Gnome应用程序访问诸如FTP或Samba服务器之类的资源或诸如本地目录之类的zip文件的内容。FUSE是一种将文件系统驱动程序实现为用户代码(而不是内核代码)的方式。GVFS-FUSE网关使GVFS文件系统驱动程序可用于所有应用程序,而不仅仅是使用Gnome库的应用程序。

与FUSE文件系统一起管理信任边界非常困难,因为与传统文件系统的内核代码相比,文件系统驱动程序以无特权的用户身份运行。为了避免复杂化,默认情况下,只有运行驱动程序进程的用户才能访问FUSE文件系统。即使是root也无法绕过此限制。

如果仅在本地文件系统上搜索文件,请传递-xdevfind。如果要遍历多个本地文件系统,请全部列举。

find  / /home -xdev -name ngirc

如果文件从昨天开始就存在,您可以尝试尝试locate ngirclocate搜索通常在每晚更新的文件名数据库)。

如果确实要遍历GVFS挂载点,则必须以适当的用户身份进行。

find / -name ngirc -path '/run/user/*/gvfs' -prune -o -path '/home/*/.gvfs' -prune -o -name ngirc -print
for d in /run/user/*; do su "${d##*/}" -c "find $d -name ngirc -print"; done

感谢您对GVFS和FUSE的精彩解释。我尝试像您的示例中那样运行“查找”,效果很好。
2013年

FUSE如何防止root用户访问文件?根当然可以禁用这种保护。
Akinos 2015年

1
@Nat Root可以将其进程的fsuid更改为目标uid,因此从安全的角度来说,绕过该保护是微不足道的。但是内核中的访问控制功能拒绝对root的访问。这种现象在其他文件系统中也会发生,例如root无法在不切换到所有者的UID的情况下访问NFS上的私有目录。
吉尔斯(Gillles)“所以-别再作恶了”

2
以“避免出现并发症” ...好吧,这肯定造成了一个巨大的麻烦,因为我无法使用mount命令将共享路径映射到更清洁的文件夹名称。
Nuzzolilo '16

@Nuzzolilo我不知道你在说什么。如果您有问题,请提出一个新问题,并确保说明您的情况。
吉尔(Gilles)'所以

10

这是一个保险丝问题。除所有者外,没有其他用户可以阅读。要变通解决默认配置,请尝试启用user_allow_other选项。通过将其添加到/etc/fuse.conf中来指定该选项。它没有值,只需在空白行上指定选项即可。


谢谢。我不太了解保险丝是什么,但是在阅读了您的注释中的错误报告和don_crissti的注释后,我猜想这与插入的USB硬盘驱动器或samba服务器有关?启用“ user_allow_other”时是否应该考虑任何安全问题,并且应该考虑其他安装选项吗?谢谢。
2013年

1
谢谢,但是如果没有其他人可以使用该系统,那么这对我来说不是真正的解决方案。我怎么知道主人是谁?我尝试卸载/断开外部硬盘驱动器并关闭samba服务器。我真正想做的就是能够在整个文件系统中搜索文件而不会损害安全性。是否有FUSE的替代品,有没有办法确切说明它的用途?谢谢。
2013年

askubuntu.com/questions/715637/…我尝试了@Christopher的建议,但命令行选项未得到尊重。我怀疑以某种方式配置了守护程序自动启动器,但是我找不到这样做的配置文档
Nuzzolilo

3

如果您正在按照以下说明获取gvfs的权限和其他详细信息

d?????????? ? ?    ?      ?            ? gvfs

然后只需使用以下命令卸载gvfs。执行此过程后,您的问题将得到解决。

umount ~/gvfs(umount /run/user/112/gvfs in my case).

GVFS(GNOME虚拟文件系统)是GNOME桌面的虚拟文件系统,它使用户可以通过udev集成轻松地通过SFTP,FTP,WebDAV,SMB和本地数据访问远程数据,因此在卸载此文件时无需担心。


3

这是一个旧线程,但是在gnome错误报告中,这是一个近期未解决的问题,因此它对于寻找几个小时来解决gvfs-fuser问题的解决方案的人可能有用-这些问题似乎都紧密相关。

来自融合的错误消息:

Error copying '/media/root/5FDA03906F33F217/SAVE/rsyncTEST-usb/allusers' to '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'

[Errno 95] Operation not supported: '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'.

我在尝试通过ftp使用meld / diff / kdiff时遇到gvfs-fuser问题。似乎问题出在定影器和gvfs之间。该问题似乎不在3.15.1中发生,但在3.15.2中开始报告。(新的python ver?)解决方案是一种解决方法,而不是修复程序-文件/目录将复制但仍显示错误。

Christopher的答案定义了问题并提供了解决方案。

另一个可能的解决方案是使用sshfs(请参阅此注释该线程)。有关的更多信息gvfs-commands,请参见gvfs命令与常见命令(例如cat,ls,cp)有什么区别?

可能相关的错误包括GNOME#317875GNOME#768281

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.