Este é um trabalho típico para ACLs: -)
Seu exemplo
$ mkdir /tmp/foo
Defina as permissões para o próprio diretório
$ setfacl -m g::rwx -m o::rx /tmp/foo
Defina as permissões para o diretório e os arquivos recém-criados nesse diretório.
$ setfacl -m default:g::rwx -m o::rx /tmp/foo
Teste
$ mkdir /tmp/foo/bar
$ touch /tmp/foo/bar/baz.py
$ ls -ld /tmp/foo/bar /tmp/foo/bar/baz.py
drwxrwxr-x+ 2 jdoe jdoe 4096 Mar 10 00:06 /tmp/foo/bar
-rw-rw-r-- 1 jdoe jdoe 0 Mar 10 00:06 /tmp/foo/bar/baz.py
Explicações
- O conceito de máscara é muito diferente com a máscara de permissões ACL e Unix. a máscara da ACL é um atributo do arquivo ... que restringe a permissão máxima concedida pela ACL (
mask:r-x
+group:foo:rwx
= > permissões efetivas =r-x
) - Aviso: modificar a permissão Unix do grupo também modifica a máscara da ACL (por design!).
Sugestões
- Use setgid (como
chmod 2755
) para controlar qual grupo pode gravar no arquivo. - e / ou conceder explicitamente permissões a um grupo
setfacl -m group:dev_team:rwx