Arquivo com permissão de escrita para root não aceita alteração

Contratei um serviço de Cloud Computing da UOL Host, diga-se de passagem, excelente serviço, 2 anos usando e nunca tive caiu o servidor, só cai quando eu reviro de mais e faço merda, nada que um backup semanal não salve ;). Voltando, precisei contratar um novo servidor para servir de Backup e fui seguir o guia de instalação do ISPconfig 3. Fui alterar o arquivo host e tive a agradável surpresa de não conseguir, aparecia uma mensagem no vi:

W10: Warning: Changing a readonly file

Fui dar uma olhada nas permissões e parecia tudo certo

root@servidor2:/etc# ls -l hosts
-rw-r–r– 1 root root 485 2014-05-02 03:13 hosts

Permissão de edição setada corretamente, tentei chutar o balde e mandar um chmod 777, não resolveu

chmod: changing permissions of `hosts’: Operation not permitted
(pensei comigo mesmo “que root de merda!”)

Parti pro meu amigo Google!!
Pesquisei e encontrei esse tópico:
http://ubuntuforums.org/archive/index.php/t-1509499.html
No link acima tem a solução. Vou dar uma explicação rápida e meia boca aqui pra não ficar batido.

Os comandos lsattr e chattr funcionam mais ou menos como o chmod, só que ao invés de permissões ele troca atributos do arquivo, podendo até bloquear o acesso de root ao arquivo.
Bem, o lsattr serve para ver os atributos do arquivo e o chattr serve para modificar os atributos do arquivo.

Essa aqui foi a saída que o lsattr me deu:
root@servidor2:/etc# lsattr hosts
—-i————e- hosts

Daí mandei:
root@servidor2:/etc# chattr -i hosts

E ficou assim:
root@servidor2:/etc# lsattr hosts
—————–e- hosts

Os atributos que eu sei explicar são os mais faceis:
i – imutável, até o poderoso root não pode fazer nada com esse arquivo, muito chato quando você não sabe o que tá acontecendo
u – salvação da pátria, o arquivo se torna recuperável quando você o apaga, tipo a lixeira do windows eu imagino kkkkk
e – é um atributo padrão de todos os arquivos linux armazenados em um sistema de arquivos ext4
a – Esse é bem interessante, ele não deixa modificar nenhuma parte do arquivo, somente adicionar novo conteúdo no final do arquivo.

Para adicionar um atributo ao arquivo, por exemplo o atributo a, use o sinal de “+”:
root@servidor2:/etc# chattr +a hosts

É isso aí, espero ter ajudado nesse momento de desespero ao ver seu usuário root impossibilitado de alterar um arquivo.

Leave a Reply

Your email address will not be published. Required fields are marked *