Linux 中的跨组文件权限

Linux 中的跨组文件权限

我有 2 个用户:Alice 和 Bob,以及 2 个组:管理和人事。Alice 有主要组管理,次要组人事和 Alice。Bob 有主要组人事和次要组 Bob。

现在他们都需要对 /var/svn/new-project/ 中的本地 Subversion 存储库具有读/写权限。问题是,当 Alice 提交到存储库时,Bob 无法再提交,因为他不在管理组中,而管理组是 Alice 的主要组。

我的问题:如何在不弄乱权限的情况下启用对存储库的读取和写入,同时将它们保存在单独的主要组中,而无需将 repo 目录 chmod 为 777,也无需运行每分钟修复权限的 cronjob?

答案1

您可能想要在目录上启用 setgid 位,并将目录的组设置为公共组(在本例中为人员)。目录上的 setuid/setgid 强制在其下创建的文件被赋予目录的所有者/组。

答案2

使用 ACL(访问控制列表)。文档位于此处:http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html

您的设置示例:

setfacl --recursive -m u:Alice:rwx /var/svn/new-project/
setfacl --recursive -m u:Bob:rwx /var/svn/new-project/ 

答案3

使存储库文件夹结构归人员组所有。

权限为 770,并确保两个用户都有 00x umask。

(如果需要,可以在使用前将 Subversion 客户端包装在一个小脚本中,将 umask 设置为 00x。)

除非你的 Subversion 客户端在更新存储库时对文件权限做了一些不寻常的事情,否则这应该足够了。

相关内容