我已成功设置 SFTP 以将用户 chroot 到他们的主目录。
但是,我有一个案例,我无法找到任何示例,并且 chroot 所需的奇怪权限让我怀疑我是否可以做到这一点。
我需要有一个用户,比如“fileadmin”,可以在他们的主文件夹下创建新文件夹(通过 SFTP - 除非正在调试/等,否则他们不会使用 shell 登录),然后这些新文件夹将成为新用户的 chrooted 文件夹。这样,fileadmin 可以为这些其他用户上传文件,然后他们可以下载(只读访问就可以了)。
因此,文件系统设置的一个示例是:/home/fileadmin/(fileadmin 的主文件夹)/home/fileadmin/rouser1 /home/fileadmin/rouser2 等等...
用户 fileadmin 不需要是 chrooted 帐户 - 它是我们控制的帐户并且我信任它。
我已将 fileadmin 和 rouserX 放在同一组中,并将子文件夹所有权设置为该组。
当我尝试进行此设置时,我收到:致命错误:当我使用任何“rouserX”帐户登录时,chroot 目录组件的所有权或模式不正确。
有人知道如何设置权限才能实现此功能吗?有可能吗?
rouserX 帐户存储在 openldap 中,因此想法是,它们将在 fileadmin 创建文件夹后添加(通过我没有参与的后端 ldap webapi)。
答案1
要求从 chrooted 用户的主目录到根目录的所有目录必须由用户所有,root:root
并且不得是组或世界可写的。主目录可能并非如此fileadmin
。
这非常类似于这问题。
答案2
谢谢。我发现一种方法是将所有用户的 chroot 设置为相同,然后从那里向下设置主目录(即:/chroot 和用户“test”是 /home/test,实际上是 /chroot/home/test)。这在某种程度上按我想要的方式工作。问题是,由于我必须使用组权限才能使其工作,如果用户 2 知道正确的路径,他们就可以进入用户 1 的文件夹。
我最终编译了支持 SSH/SFTP 的 ProFTPD,它完全按照我想要的方式运行。