我有一个用户,他只有 sftp 权限(没有 ssh),并且在 SFTP 中 chrooted 到/data/docker
。/data
(这是一个单独的驱动器)具有 775 权限,我想保持这种状态。但是,当有组写入权限时/data
,我在尝试以此用户身份进行 sftp 时收到此错误:
Write failed: Broken pipe
Connection closed
我怎样才能允许 SFTP 而不将 chmodding 设置/data
为 755?
答案1
OpenSSHsshd_配置手册对 chroot 目录的要求说得很清楚:
ChrootDirectory Specifies the pathname of a directory to chroot(2) to after authentication. All components of the pathname must be root- owned directories that are not writable by any other user or group.
如果您想要/data
模式 0775,那么它就不能成为 SSH chroot 文件夹路径的一部分。
我认为使用 OpenSSH 解决此问题的方法是创建另一个/chroot
具有正确权限的路径。使用绑定挂载、NFS 或您的操作系统支持的任何方式将此/data/docker
文件夹挂载到新文件夹中。然后,您将设置/chroot/docker
为 chroot 文件夹。用户应该能够/data/docker
通过该/chroot/docker
路径访问内容。
或者,您可以构建并使用不受此限制的 OpenSSH 副本sshd
。或者您可以考虑使用不同的 SFTP 服务器。JScape有一个商业产品可能可以满足您的要求。