因此,我可以从 Gnome“位置”菜单或通过命令行正确挂载 GVFS 位置(特别是 CIFS)gvfs-mount
,但文件系统未挂载在预期位置;~/.gvfs
。事实上,运行该mount
命令根本没有列出任何 GVFS 文件系统。
- 非 root 用户可以重现此情况,而 root 用户的行为则符合预期。
- Strace 揭示了用户在挂载路径 /home/username/.gvfs 的文件系统时出现权限错误。
- 所有权和权限是正确的,并且没有显示的路径扩展属性
lsattr
。 - 此外,/root/.gvfs 和 /home/username/.gvfs 位于同一个文件系统上。
- 所有包裹都是最新的。
有任何想法吗?
编辑:
看完之后这个问题,发现gvfs-fuse-daemon
没有启动,尝试手动运行它。
$ /usr/libexec/gvfs-fuse-daemon ~/.gvfs fuse: 无法执行 fusermount:权限被拒绝
因此,我看到的权限被拒绝strace
是在 上/bin/fusermount
,而不是目标路径上/home/username/.gvfs
。但是,/bin/fusermount
是 setuid,因此非特权用户应该能够以 root 身份运行它。我不喜欢弄乱权限,但给了/bin/fusermount
o+rx 进行测试。它执行并修复了问题。 那么,为什么非 root 用户必须手动运行此守护程序?这似乎也是 Ubuntu 的问题,但在另一个问题中没有得到解答。
编辑:2012 年 7 月 10 日
我了解到我不应该将 o+rx 提供给 /bin/fusermount,而应该将用户添加到 fuse 组。
答案1
在 Ubuntu 12.10 中,路径发生了改变:
$ mount |grep gvfs
gvfsd-fuse on /run/user/pcm/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=pcm)