Isso não pode ser feito de forma confiável com POSIX ACLs - se você tornar os subdiretórios graváveis por padrão, os arquivos também serão graváveis por padrão.
-
Para permitir a criação de arquivos, atribua direitos de gravação (rwx) ao diretório. "ACLs padrão" podem ajudar com isso: defina
d:g:twousers:rwX
no diretório (supondo que ambos os usuários estejam no grupotwousers
) e todos os itens recém-criados herdarão isso. -
Para proibir a modificação de arquivos de outros usuários, não faça nada. A configuração padrão de umask (022) já garante que os arquivos recém-criados só possam ser gravados pelo proprietário (rw / r / r).
No entanto, se o diretório tiver "ACLs padrão" definidas como # 1, essas ACLs também serão adicionadas a arquivos recém-criados.
(Lembre-se, porém, que somente o proprietário pode alterar (chmod) as permissões de um arquivo. Assim, outros usuários não podem tornar um arquivo gravável se ele ainda não estiver.)
-
Para proibir a exclusão de arquivos de outros usuários, defina o bit adesivo no diretório. Não pode ser herdado, infelizmente.
Como você pode ver, os pontos # 1 e # 2 entram em conflito (as ACLs padrão se aplicam a todos os objetos, independentemente do tipo).
Você poderia classificar alcançar isso ensinando os usuários a chmod +t,g+w
a cada novo diretório criado, mas isso não é particularmente confiável.
Uma solução seria usar ACLs do NFSv4 , que pode ser marcado como herdável apenas por arquivos ou diretórios. Infelizmente, eles não são suportados pelo Linux nativamente, exigindo que os patches do kernel sejam aplicados. Se você gosta dessas coisas, nfs4acl e ngacl são duas implementações.
Um lugar no qual o Windows faz o trabalho melhor.