以非 root 用户身份使用密码提示进行 Samba 挂载

Gil*_*il' 20 command-line samba not-root-user

我想挂载受密码保护的 SMB 共享(由 Windows 机器提供服务)。共享受用户名和密码保护,我可能不会将密码写在文件中,我想在挂载时提示输入密码。

我需要一个即使在客户端计算机上的用户没有任何管理权限时也能工作的解决方案,因此无论使用何种方法安装共享都不得让他获得 root 权限。初始安装可以以 root 身份完成。用户必须能够指定任意服务器名称。我的迫切需要是使用 Ubuntu 12.04,但解决方案适用范围越广越好。

客户端是无头的,所以我正在寻找一个命令行工具。

我试过的:

  • mount.cifs: 虽然它可以设置为 setuid root,但它的作者并不认为它是安全的。在下面运行它sudo有同样的问题。
  • smbnetfs, fusesmb: 我无法说服他们中的任何一个提示我输入密码。
  • Nautilus 和 gvfs:gvfs-mount smb://servername/sharename失败并显示Error mounting location: volume doesn't implement mount.

如何以非 root 用户身份从命令行挂载 Samba 共享,并显示密码提示?

Gil*_*il' 23

“错误安装位置:卷没有实现安装”显然转化为“我需要 D-Bus 但它不可用”。(感谢venturax 的大师同事提供此信息。)在SSH 会话中,我可以使用gvfs-mount前提dbus-daemon是首先启动并设置环境变量DBUS_SESSION_BUS_ADDRESS

export $(dbus-launch)
gvfs-mount smb://workgroupname\;username@hostname/sharename
# Type password
ls ~/.gvfs/'sharename on hostname'
Run Code Online (Sandbox Code Playgroud)

gvfs-mount和其他 GVFS 实用程序都必须与同一个 D-Bus 会话对话。因此,如果您使用多个 SSH 会话或以其他方式跨登录会话使用挂载,您必须:

  • 最迟在第一次需要时启动 D-Bus;
  • 注意不要让 D-Bus 以会话结束,只要有挂载的 GVFS 文件系统;
  • 如果有的话,在登录时重用现有的 D-Bus 会话。

为此,请参阅跨登录会话重用 D-Bus 会话