为 sshfs 挂载点设置适当的权限,以便可以与 samba 共享

为 sshfs 挂载点设置适当的权限,以便可以与 samba 共享

我有一个提供通过 SSH 访问的域名托管商。

我的平台是:

  • Gentoo 2.6.36-r5
  • Windows(XP/Vista/7)

我在 Windows 上工作,我使用 Gentoo 来完成 Windows 无法完成的所有神奇的事情。

因此我使用 sshfs 将我的域的远程公共目录挂载到 /mnt/mydomain.com。身份验证是通过密钥完成的,这样懒惰的我就不必时不时地输入密码了。

因为我是在 Windows 上进行编码,并且我不想一直上传/下载更改的文件,所以我想通过 samba 共享访问这个 /mnt/mydomain.com。

因此我在 samba 中共享了 /mnt,除 mydomain.com 之外的所有挂载都列在我的 Windows 资源管理器中。

我的理论是:

  1. SSHFS没有将挂载点 uid/gid 设置为桑巴期望
  2. 桑巴不知道它必须包含 uid/gid/mnt/mydomain.com已经设置好了。
  3. 以上都是错的,我不知道。

这是控制台的配置和输出,需要其他信息请告诉我。此外,我没有注意到与此问题相关的错误或警告,但我可能是错的。

gentoo ~ # ls -lah /mnt
total 20K
drwxr-xr-x  9 root  root  4.0K Mar 26 16:15 .
drwxr-xr-x 18 root  root  4.0K Mar 26  2011 ..
-rw-r--r--  1 root  root     0 Feb  1 16:12 .keep
drwxr-xr-x  1 root  root     0 Mar 18 12:09 buffer
drwxr-s--x  1 68591 68591 4.0K Feb 16 15:43 mydomain.com
drwx------  2 root  root  4.0K Feb  1 16:12 cdrom
drwx------  2 root  root  4.0K Feb  1 16:12 floppy
drwxr-xr-x  1 root  root     0 Sep  1  2009 services
drwxr-xr-x  1 root  root     0 Feb 10 15:08 www

/etc/samba/smb.conf

[mnt]
comment = Mount points
writable = yes
writeable = yes
browseable = yes
browsable = yes
path = /mnt

/etc/fstab

sshfs#[email protected]:/home/to/pub/dir/ /mnt/mydomain.com/ fuse comment=sshfs,noauto,users,exec,uid=0,gid=0,allow_other,reconnect,follow_symlinks,transform_symlinks,idmap=none,SSHOPT=HostBasedAuthentication 0 0

为了更容易阅读:

选项:

  • 评论=sshfs
  • 禁止自动
  • 用户
  • 执行
  • uid=0
  • gid=0
  • 允许其他
  • 重新连接
  • follow_symlinks
  • 变换符号链接
  • idmap=无
  • SSHOPT=基于主机的身份验证

帮助!

答案1

sshfs是基于 FUSE 的文件系统,出于安全考虑,默认情况下 FUSE 层不允许其他用户访问其挂载。您有allow_other选项,但它将被忽略,直到您也编辑/etc/fuse.conf以包含user_allow_other

答案2

为什么不直接从 Windows 安装 sshfs?
有几个免费的解决方案(请参阅这里这里了解更多信息)。

答案3

由于您的普通 smb 共享正在运行,因此我不会错过有关 Samba 配置的任何信息,因为您可以像共享普通文件夹一样使用 sshfs 挂载。但与仅本地计算机访问相比,通过 sshfs 挂载 SSH 共享是特殊的。

要通过 fstab 安装共享,您可以将此行放入 /etc/fstab 并按要求安装共享。这比 c&p 命令行命令更方便。

通用 etc/fstab 行:

**<USERNAME>**@<SERVER>:<REMOTE_PATH> /MOUNT/POINT fuse.sshfs noauto,users,idmap=user,IdentityFile=/path/to/.ssh/id_rsa,allow_other,reconnect,port=22,uid=<UID>,gid=<GID> 0 0

禁止自动:您需要通过mount /MOUNT/POINT /etc/fstab 中的这一行获取所有其他信息来挂载它

用户: 允许普通用户挂载此挂载条目

重新连接:待机后重新连接/重新挂载 ahre 等

uid=/gid=:将远程 uid/gid 映射到本地 uid/gid

例子:

[email protected]:/home/foo/music ~/foos_music fuse.sshfs noauto,users,idmap=user,IdentityFile=/home/foo/.ssh/id_rsa,allow_other,reconnect,port=22,uid=foo,gid=users 0 0

关于 sshfs 挂载你需要知道的一切 [https://wiki.archlinux.org/index.php/Sshfs]

相关内容