openssh sftp chroot:两个访问级别

我想用OpenSSH的internal-sftp,chroot和Match指令来实现以下function:

属于sftpuser组的用户应该具有对/ srv / sftp / {username}的读写权限(或者类似的,某些技巧可以为chroot用户提供一个更好看的目录结构)

属于组sftpadmin的用户应具有对/ srv / sftp和子目录(即所有其他用户目录)的读写权限。

属于sftpadmin或sftpuser的所有用户都是sftp专用用户。 所以不用担心炮弹等

/ srv / sftp需要由sftpadmin用户拥有,才能被chrooted到该文件夹​​。 / srv / sftp / {username}也需要由root拥有才能将sftpuser用户chroot到那个文件夹。

我应该如何最好地授予sftpadmin用户访问根拥有/ srv / sftp / {用户名}目录?

我可以在根权限之上使用ACL吗?

我结束了这样做:

/ srv / sftp / testadmin( testadmin用户的主目录)

/ srv / sftp / testuser / testuser( testuser用户的主目录)

将sftpadmin组我chrooted到/ srv / sftp:

Match Group sftpadmin ChrootDirectory /srv/sftp AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp 

并将sftpuser组chrooted到/ srv / sftp / {username},并将其起始目录更改为/ srv / sftp / {username} / {username}(仅从/ chroot中看到/ {username}):

 Match Group sftpuser ChrootDirectory /srv/sftp/%u AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp -d /%u 

最后,我在/ srv / sftp / testuser / testuser目录中给出了sftpadmin组rwx:

 setfacl -mg:sftpadmin:rwx /srv/sftp/testuser/testuser 

这大致完成了我想要的。 sftpadmin组可以读取,写入并将工作目录更改为/ srv / sftp下的任何内容(包括sftpuser组的“家庭目录”)。 sftpuser组只能写入/ srv / sftp / {用户名} / {用户名}目录,而不能看到其他sftpuser家目录,因为它们位于sftpuser组的chroot之外。

唯一觉得不可取的是/ srv / sftp / {username} / {username}结构。 sftpuser组的用户可以执行cd ..并返回到/ srv / sftp / {用户名},除非更改回/ srv / sftp / {用户名} / {用户名},否则用户无法做任何有用的操作。 通过删除/ srv / sftp / {username}的执行位,可以防止将目录切换到/ srv / sftp / {username},但也会阻止sftpadmin组更改到该目录,从而有效地阻止他们列出文件等等/ srv / sftp / {用户名} / {用户名}目录中。