Eu preciso tornar um arquivo undeleable, mas permitir que ele seja modificável e renomeavel

1

Eu tenho um script que verifica a presença de um arquivo e, se ele existir, lê uma lista de endereços de email dele para enviar notificações. Quando não preciso ser notificado, por exemplo, quando estou no trabalho já monitorando a saída, eu o renomeio. Eu não quero que outros administradores possam excluí-lo.

Eu sei que chattr +i tornará o arquivo imutável, mas eu só quero impedir que o arquivo seja excluído. Eu acho que o programa chattr estaria usando o número inode para rastrear atributos e não o nome do arquivo.

Existe algum utilitário que possa fazer isso acontecer?

    
por user208145 07.11.2015 / 03:03

4 respostas

2

Esse comentário sobre "outros administradores" sugere que você tem o privilégio root no sistema em que deseja armazenar o arquivo. Qualquer coisa que você poderia configurar no caminho de permissões poderia ser desfeita por alguém com os mesmos privilégios.

Se isso não é uma preocupação, e ninguém estendeu privilégios, então você poderia simplesmente colocar o arquivo em /tmp ou /var/tmp , que normalmente tem o conjunto t-bit (evitando outros não deletar ele. Você pode chmodar o arquivo para torná-lo gravável em grupo (e modificável por outros no mesmo grupo).

    
por 07.11.2015 / 03:19
2

Os "outros administradores" são mal-intencionados? Eles estão fora para te pegar? Se sim, provavelmente não há nada que você possa fazer.

Se não, talvez a solução mais simples seja alterar o script para colocar o arquivo em seu diretório pessoal. Uma variação disso é fazer link (s) rígido (s) para o arquivo em diretórios diferentes; contanto que eles não excluam (desassocie) todos os links, o arquivo ainda estará intacto. (Você deve escrever outro script para percorrer todos os locais dos links, encontre um que ainda existe, e, em seguida, vincule novamente todos os que foram removidos.) Tome cuidado, pois alguns editores quebram links (ou seja, se você editar o arquivo).

Isso pode resolver o problema mesmo que os "outros administradores" sejam mal-intencionados e / ou fora de você, se eles são inexperientes e não completos.

Ou torne o arquivo imutável e altere o script para usar outro teste para determinar se deve enviar os emails.

    
por 07.11.2015 / 04:54
1

Para o ponto levantado em algumas das outras respostas, você poderia usar o utilitário mv para sugerir uma barreira social:

mv yourfile THIS_IS_user38537_FILE_PLEASE_DO_NOT_REMOVE
    
por 08.11.2015 / 15:49
1

[Substituição da resposta antiga]

Você pode simplesmente criar um link físico para o arquivo:

ln email_file hard_link

Então, se for excluído, ele ainda existe e pode ser facilmente restaurado.

[Resposta antiga, baseada na incompreensão do problema]

Uma solução seria tornar o próprio script imutável com chattr , mas ligá-lo e desligá-lo, não por renomeá-lo, mas com a presença ou ausência de um arquivo vazio que você pode perder. Chame isso, digamos %código%. Se existir, o script não será notificado. Se não é lá, o script notifica. Fazê-lo dessa maneira não é seguro se alguém acidentalmente exclui: você recebe suas notificações e também notificou que algo aconteceu com snoozebutton .

Isso pressupõe que você não precise modificar o script com frequência, é claro. Se você fizer isso, você vai querer um pequeno script de utilitário para executar snoozebutton , então execute o editor e execute chattr para bloqueá-lo novamente.

    
por 07.11.2015 / 11:03