[Dicas-L] Protegendo arquivos e diretorios contra apagamento inadvertido
Colaboração: Sydnei Lucchesi Le Petit
Quem já escreveu um script que roda em ambiente texto provavelmente já deve ter se deparado com a triste constatação de ter apagado, inadvertidamente aquele programa tão necessário, importante e especialmente, utilizado. Dá um frio na barriga e uma sensação de ter perdido o chão, não é mesmo? Ainda mais se não se tem o hábito de realizar backup.
Eu sei bem disso, pois passei por isso algumas vezes e pesquisando, descobri um comando ótimo para evitar que tragédias assim aconteçam novamente e deu certo, pois inadvertidamente eu teria repetido o erro.
O comando é o chattr, que com duas de suas opções, impede que os arquivos sejam apagados, até mesmo pelo root.
Mas o comando é muito mais eficiente do que isso e com um pouco de atenção e dedicação, identificará aqueles atributos que lhe são mais convenientes.
O comando chattr serve para incrementar segurança no arquivo ou diretório, usando atributos e não permissões como o chmod. Esses atributos são extensões que proíbem que o arquivo seja alterado, removido, renomeado e esses atributos pode ser atribuídos para o dono do arquivo e até mesmo para o root, mas, apenas o root é quem pode mudar essas atribuições, seja pelo usuário root propriamente dito ou através do comando sudo.
chattr [opção] [atributo] [arquivo/diretório]
-R modifica atributos em subdiretórios.
-V Mostra detalhes sobre a modificação do atributo:
Atributos de arquivo / diretório
+ adiciona atributo
- remove atributo
= define o atributo igual especificado
A Não modifica a hora de acesso ao arquivo (somente em kernel 2.2)
a Append Only, arquivo pode somente ser gravado em modo incrementado, ou seja, pode ser adicionado conteúdo somente no final do arquivo, não pode ser removido ou renomeado.
c Permite compactação nos arquivos especificados de forma transparente.
d Protege para o dump não fazer backup do arquivo.
i Imutáveis. Arquivos Imutáveis não podem ser modificados, gravados, removidos, renomeados. Até mesmo o usuário root com poder máximo não pode alterar.
s É chamado de apagamento seguro, quando eliminado o arquivo é zerado sem possibilidade de recuperação.
S Faz a gravação imediatamente para o arquivo especificado, como sync, ex: igual aos disquetes.
u É marcado como recuperável, quando apagado é salva uma copia para permitir recuperação.
OBS: Quem utiliza Kernel 2.6 ou mais recentes não precisa se preocupar com os atributos, somente kernel abaixo de 2.6 que precisa de compilação em alguns casos.
Com arquivo:
$ sudo chattr +AsdiSu teste.txt
--S-iadA---------- teste.txt
+ Adiciona o atributo que se segue.
A Não modifica a hora de acesso ao arquivo (somente em kernel 2.2).
u É marcado como recuperável, quando apagado é salvo uma copia para permitir recuperação.
$ sudo chattr -SdA teste.txt
----ia------------ teste.txt
- Remove o atributo que se segue
Com diretório:
$ sudo chattr +iAd diretório
----i-dA---------- diretório
Caso deseje apenas proteger seu script contra eventual apagamento, até mesmo pelo root, como foram os meus casos:
$ sudo chattr +i backup.sh
E se, por ventura, quiser fazer alguma atualização no script.
$ sudo chattr -i backup.sh
Faça a atualização no código, mas não se esqueça de protegê-lo novamente...
$ sudo chattr + i backup.sh
Agora, se não precisa mais desse script e quer apenas apagá-lo...
Daí é só apagar o arquivo.
LEMBRE-SE: Os atributos só podem ser alterados pelo root ou então através do comando sudo.
O comando chattr tem um amigo chamado lsattr que lista os atributos atribuídos a um arquivo/diretório.