Impede que um subdiretório seja excluído / imponha uma estrutura de diretórios

3

imagine a seguinte estrutura de pastas

../documents

../documents/templates

Eu tenho dois grupos de usuários:

  • editores
  • gerentes

Os usuários de ambos os grupos devem poder

  • crie novos arquivos
  • modificar arquivos
  • excluir arquivos

in ../ documents.

Ambos os grupos também devem poder ler qualquer arquivo em ../ documents / templates.

Apenas os usuários dos "gerentes" do grupo devem poder

  • crie novos arquivos
  • modificar arquivos
  • excluir arquivos

em ../ documents / templates.

O diretório "../documents/templates" deve estar desabilitado para ambos os grupos!

Como posso conseguir isso? Cheguei à conclusão de que isso não é possível com o Linux (mesmo com POSIX ACLs), porque você precisa definir g = rwx para "documentos", o que permitirá aos usuários de ambos os grupos criar / excluir / modificar qualquer arquivo nesse diretório ... mas + w também permite a exclusão dos "templates" do subdiretório e não sei como negar isso.

    
por Igor 08.09.2011 / 23:02

1 resposta

2

Ninguém poderá excluir ../documents/templates se contiver qualquer outra coisa. Assim, você poderia criar um subdiretório ../documents/templates/.hidden , com 000 permissões e colocar um arquivo vazio dentro dele (bem, antes definindo as permissões 000 , obviamente). Então rmdir ../documents/templates falhará, assim como rmdir ../documents/templates/.hidden .

Editar: para emprestar de outra resposta que foi excluída, se você for superusuário, poderá fazer isso em vez disso, o que é um pouco mais simples:

cd ../documents/templates
touch .locked
chattr +i .locked

( chattr precisa ser executado como superusuário.)

    
por 08.09.2011 / 23:13