Como detectar e impedir que o usuário exclua um determinado arquivo no Linux?

2

É possível monitorar as ações do usuário no sistema de arquivos e impedi-lo de executar ações específicas? Pode inotify apenas monitorar ações no sistema de arquivos? E quanto a fanotificar? Há muito pouco sobre isso na Web ...

Meu programa (daemon) envia arquivos particulares pela rede. Quero ter certeza de que o usuário não excluirá nem moverá meu arquivo, mas a nuvem poderá lê-lo. Quando o usuário tenta excluir meu arquivo com qualquer programa chamando por exemplo. unlink () Eu quero fazer esta chamada unlink () irá falhar com algum erro (EACCES?). Eu posso fazer um truque semelhante implementando o sistema de arquivos no FUSE, mas não é uma solução aqui ...

    
por Goofy 08.01.2012 / 23:33

2 respostas

5

O que você está pedindo é facilmente alcançado por meio de permissões unix tradicionais. Certifique-se de que o usuário possa acessar o diretório em que o arquivo está armazenado, mas não gravar nele ( r-x permissões no diretório e seus ancestrais). Conceda ao usuário permissão de leitura para o arquivo, mas não permissão de gravação (supondo que o usuário não possa modificar o arquivo), ou seja, r-- . Sem permissão de gravação no diretório, o usuário não poderá excluir o arquivo.

O monitoramento não ajudará você. Pode-se dizer que o usuário excluiu o arquivo, mas não é possível impedir que uma ação aconteça apenas monitorando esta ação.

    
por 08.01.2012 / 23:53
4

Embora Gilles faça uma boa sugestão, outra opção (se, por exemplo, você não puder controlar as permissões do diretório) seria definir o sinalizador imutável no arquivo, com chattr +i . Isso impediria que qualquer usuário gravasse ou excluísse o arquivo em questão. Observe que isso requer acesso root.

    
por 08.01.2012 / 23:57