我有以下设置:
有几个用户/ 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以外的目录。