chrooted sftp环境中的强制组分配

我有以下设置:

有几个用户/ home / user1,/ home / user2等等。 另外还有一个用户/ home / sftp-all。 文件夹/ home / sftp-all / shared安装在每个其他用户/ home目录中,例如/ home / user1 / shared。 所有用户user1,user2,…,sftp-all都是名为“sharegroup”的组的成员。

现在的问题是,如果其中一个用户(user1,…)写入该文件夹,则新文件由用户及其主要组(例如user1:user1,..)拥有。 相反,我希望它由user1:sharegroup所有。 任何想法如何解决这个问题? 先谢谢你!

您应该考虑在文件系统上使用ACL权限。 您可以设置“默认”权限,并且可以有多个组,用户等

https://help.ubuntu.com/community/FilePermissionsACLs

看到这个其他职位的答案更多的信息:

https://superuser.com/questions/381416/forcing-group-and-permissions-for-created-file-inside-folder

设置sgid位,使其在/home/sftp-all/shared目录中启用,并创build该目录的组/home/sftp-all/shared组。

 $ chmod g+s /home/sftp-all/shared 

最后确保/home/sftp-all/shared中的任何预先存在的文件都将其组设置为/home/sftp-all/shared组。 这可以这样做:

 $ chgrp sharegroup /home/sftp-all/shared/* 

通过在目录上设置xgid位,你可以强制任何一个组织所拥有的目录,在任何时候都会传播新的文件。 这种方法只适用于新创build的文件,例如,如果有人将文件从系统的其他位置移动到这个目录中,则不会执行组的所有权。

但是,鉴于这是一个SFTP服务器应用程序,我想不出用户能够将文件移动到SFTP以外的目录。