![为什么即使以 root 身份运行也找不到 read /run/user/1000/gvfs ?](https://linux22.com/image/32514/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8D%B3%E4%BD%BF%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E4%B9%9F%E6%89%BE%E4%B8%8D%E5%88%B0%20read%20%2Frun%2Fuser%2F1000%2Fgvfs%20%EF%BC%9F.png)
有人可以告诉我我做错了什么,这是什么,或者如何解决它?我正在运行 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
答案1
你没有做错任何事,也没有什么可以纠正的。/run/user/$uid/gvfs
或者~$user/.gvfs
是挂载点保险丝接口到重力加速度传感器。 GVFS 是 Gnome 的虚拟文件系统实现,它允许 Gnome 应用程序访问 FTP 或 Samba 服务器等资源或本地目录等 zip 文件的内容。 FUSE 是一种将文件系统驱动程序实现为用户代码(而不是内核代码)的方法。 GVFS-FUSE 网关使所有应用程序都可以访问 GVFS 文件系统驱动程序,而不仅仅是使用 Gnome 库的应用程序。
使用 FUSE 文件系统管理信任边界很困难,因为文件系统驱动程序作为非特权用户运行,而不是传统文件系统的内核代码。为了避免复杂化,默认情况下,FUSE 文件系统只能由运行驱动程序进程的用户访问。即使是 root 也无法绕过这个限制。
如果您仅在本地文件系统上搜索文件,请传递-xdev
到find
.如果要遍历多个本地文件系统,请将它们全部枚举出来。
find / /home -xdev -name ngirc
如果该文件从昨天起就存在,您可以尝试locate ngirc
相反(locate
搜索通常每晚更新的文件名数据库)。
如果您确实想要遍历 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
答案2
它是保险丝问题。除所有者外,任何用户都无法读取。要解决默认配置问题,请尝试启用 user_allow_other 选项。通过将其添加到 /etc/fuse.conf 来指定此选项。它没有值,只需在空行上指定该选项即可。
答案3
如果您按照以下方式获得 gvfs 的许可和其他详细信息
d?????????? ? ? ? ? ? gvfs
然后使用以下命令卸载 gvfs。按照此流程后,您的问题将得到解决。
umount ~/gvfs(umount /run/user/112/gvfs in my case).
GVFS(GNOME 虚拟文件系统)是 GNOME 桌面的虚拟文件系统,它允许用户通过 SFTP、FTP、WebDAV、SMB 轻松访问远程数据,并通过 udev 集成访问本地数据,因此您在卸载时无需担心。
答案4
这是一个旧线程,但在 gnome bug 报告中,这是一个最近未解决的问题,因此对于花费数小时寻找解决方案来修复 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 问题。看来问题出在 fusionr 和 gvfs 之间。该问题似乎不会在 3.15.1 中出现,但在 3.15.2 中开始报告。(新的 python 版本?)解决方案是一种解决方法,而不是修复 - 文件/目录将复制,但仍显示错误。
克里斯托弗的回答定义问题并提供解决方案。
另一种可能的解决方案是使用 sshfs(请参阅这条评论和这个线程)。有关 的更多信息gvfs-commands
,请参阅gvfs命令与cat、ls、cp等常用命令有什么区别?