所有涉及的操作系统都是 Debian 10
我为一家科学研究所运营一个规模相当大的网络。用户有单独的 PC 来工作。登录在本地处理。为了连接用户和数据,我们运行一个 samba 服务器(“云”——仅用于共享数据,单独的登录详细信息)和一个可在全球范围内访问的登录服务器(“节点”)。用户可以通过 Nautilus 或 Dolphin 成功使用“云”上的“存档”共享。但是我想让他们也能够在“节点”上安装/访问云
我已经安装gvfs-backends
并将gvfs-fuse
所有用户添加到该fuse
组。
使用gio mount smb://cloud.[fqdn]/archive
root 可以使用任何 samba 用户名 + 密码挂载共享并访问它/run/user/0/gvfs/
对任何非 root 用户执行相同操作将产生结果volume doesn't implement mount
。
我不知道如何解释这一点,因为该卷显然是可安装的。
答案1
基于这是另一个问题的答案,问题可能是缺少 dbus 会话。请参阅:
laptop $ ssh pi
pi $ gio mount smb://192.168.86.18/Video
gio: smb://192.168.86.18/Video: volume doesn’t implement mount
通过 ssh 连接到我的无头 Raspberry Pi 后,我无法使用 gio/gvfs 挂载东西。然后,我可以启动 dbus 会话并在其中运行新的 shell:
pi $ dbus-run-session bash
pi $ gio mount smb://192.168.12.34/Foobar
…
Password required for share foobar on 192.168.12.34
…
pi $ mount | tail
…
gvfsd-fuse on /run/user/1002/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1002,group_id=1002)
pi $
一旦该 dbus 会话结束,挂载就会被卸载。
答案2
我在首次使用命令行启动并运行 Debian 10 系统时遇到了这个问题,当时还没有安装桌面环境。
安装软件包后:
sudo apt install gvfs-fuse gvfs-backends libglib2.0-bin
gio
我尝试以常规用户身份(由 Debian 安装使用 uid 创建的用户)登录并进行 SMB 挂载1000
,但出现了同样的volume doesn't implement mount
错误。
我注意到所依赖的gvfs-daemons
包包含gvfsd
一个以普通用户身份运行的服务配置:
$ dpkg -L gvfs-daemons
...
/usr/lib/systemd/user/gvfs-daemon.service
...
为了在已登录的常规用户会话中手动启动它,我执行以下操作:
systemctl --user start gvfs-daemon
此后,一切gio mount
顺利,我能够访问下已安装的卷/run/user/1000/gvfs/
。
我不需要在以后的会话中手动执行此操作——可能只需要在安装包之前已经运行的登录会话中执行此操作。