在 chrooted sftp 环境中强制组分配

在 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 所有。有什么办法可以解决这个问题吗?提前谢谢!

答案1

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

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

有关详细信息,请参阅此其他帖子的答案:

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

答案2

设置 sgid 位,以便它在目录上启用/home/sftp-all/shared,并创建该目录的组sharegroup

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

最后确保其中所有已存在的文件/home/sftp-all/shared都已将其组设置为sharegroup。可以这样做:

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

通过设置目录的 xgid 位,您可以强制在目录中创建新文件时传播该目录所属的组。此方法仅适用于新创建的文件,例如,如果有人将文件从系统上的其他地方移动到此目录中,它不会强制执行组所有权。

但是,鉴于这是一个 SFTP 服务器应用程序,我想不出用户可以通过任何方式在 SFTP 之外将文件移动到该目录中。

相关内容