É possível proibir a remoção de arquivos, mas permitir a criação deles para um diretório específico no Linux?

2

Eu tenho um aplicativo que cria arquivos temporários e os exclui rapidamente. Mas eu gostaria de manter esses arquivos, existe uma maneira de fazer isso no Linux?

    
por vava 14.06.2010 / 06:40

2 respostas

1

Sim, você pode com recursos por processo em Linux aprimorado por segurança , que faz parte do Ubuntu para o últimos dois anos. Prepare-se para uma curva de aprendizado íngreme.

    
por 14.06.2010 / 08:41
1

Eu encontrei uma solução boa o suficiente com o uso de sticky bit e inotify combinados. A idéia é simples: se definirmos um bit em um diretório, os usuários não poderão remover arquivos pertencentes a outros usuários, mas ainda poderão gravar para eles se as permissões de um arquivo forem definidas corretamente.

Então, fazemos o seguinte:

$ chmod a+t dir
$ while inotifywait -e close_write dir; do chmod a+rwx dir/*; sudo chown root:root dir/*; done

A primeira linha define um bit pegajoso. O segundo constantemente espera por mudanças em nosso diretório e, assim como o aplicativo termina de gravar em um arquivo, ele permite que todos os usuários o acessem e, em seguida, altera o proprietário desse arquivo. O proprietário não precisa ser root, ele também funciona com qualquer outro usuário.

Então, no final, acabamos com arquivos graváveis que o aplicativo não pode excluir. Exatamente o que eu precisava.

    
por 14.06.2010 / 18:02