在父级具有组写权限的目录中设置 chrooted SFTP 用户

在父级具有组写权限的目录中设置 chrooted SFTP 用户

我有一个用户,他只有 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有一个商业产品可能可以满足您的要求。

相关内容