使用ACL和umask设置共享目录中的默认文件权限

我们有一个运行Ubuntu 10.04的Linux机器。 它的主要function是一个Web服务器,并configuration(我认为)一个传统的LAMP堆栈。

开发人员可以访问一个通用目录“dev”,其中包含一个作为web根目录的子目录。 所有开发人员都有单独的SSH访问

当开发人员在“开发”目录树中创build文件,或从存储库中将文件拉入“开发”时,我们希望文件权限为rwxrwxr-x。 相反,新创build的文件的权限为rw-r-r–。 通过修改ACL并在“dev”上用粘性位等设置组和用户标识,我设法获得了具有rw-rw-r–权限的新创build的文件。

我假设问题是在/ etc / profile中使用全局值022设置的umaskconfiguration。 我不想在全球范围内更改umask,也不希望每个开发者允许更宽松的默认权限。

我看不到用ACL和umask实现我们想要的东西的方法,除非我缺less一些东西。 对于开发共享项目的Web开发人员来说,这确实是一个相当普遍的要求。

有一个首选或推荐的方法?

最初,我把gid设置为“dev”,如下所示。

chmod g+s dev ls -l drwxrwsr-x 8 755 admin 4096 Jan 19 13:24 dev 

“dev”上的默认ACL如下。

 getfacl dev # file: dev # owner: 755 # group: admin # flags: -s- user::rwx group::rwx other::rx 

我为“pipe理员”组(应用开发人员)应用ACL。

 setfacl -Rm d:g:admin:rwX getfacl dev # file: dev # owner: 755 # group: admin # flags: -s- user::rwx group::rwx other::rx default:user::rwx default:group::rwx default:group:admin:rwx default:mask::rwx default:other::rx 

我创build一个文件并检查文件权限。

 touch dev/foo ls -l dev -rw-rw-r--+ 1 duncmc admin 0 Jan 19 16:03 foo 

这次我为我的用户“duncmc”添加ACL

 setfacl -Rm u:duncmc:rwX dev getfacl dev # file: dev # owner: 755 # group: admin # flags: -s- user::rwx user:duncmc:rwx group::rwx mask::rwx other::rx default:user::rwx default:group::rwx default:group:admin:rwx default:mask::rwx default:other::rx 

我创build一个新文件并检查权限。

 touch dev/bar ls -l dev -rw-rw-r--+ 1 duncmc admin 0 Jan 19 16:07 bar -rw-rwxr--+ 1 duncmc admin 0 Jan 19 16:03 foo 

为我的用户添加ACL似乎已经改变了现有文件“foo”上的组权限(rw-now rwx)。 新创build的文件已经inheritance了不同的权限。 这对我来说没有任何意义,并且暗示了这种工作方式有一些根本性的问题,我不明白。

事实certificaterw-rw-r–(或644)的文件权限足以满足我们的要求。