Sempre crie arquivos / pastas, mas apenas escreva naqueles que o usuário possui

2

Eu preciso de 2 usuários do Linux para compartilhar uma pasta. Dentro dessa pasta, os usuários sempre devem poder criar arquivos e subpastas e gravar em qualquer subpasta (sejam eles próprios ou não). No entanto, eles só devem poder editar os arquivos que realmente possuem.

Eu tentei usar o sticky bit e as ACLs, mas ainda estou com dificuldades.

    
por Jonathan Hult 14.08.2011 / 21:26

1 resposta

3

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.

  1. 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 grupo twousers ) e todos os itens recém-criados herdarão isso.

  2. 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.)

  3. 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.

    
por 15.08.2011 / 00:08