Compreensão avançada dos comandos chattr e lsattr no Linux (foco no parâmetro -i)

Controle de atributos de arquivos com chattr e lsattr

Em alguns cenários, mesmo com permissões de superusuário (root), é impossível modificar ou excluir um arquivo. A causa mais comum está no uso do comando chattr, que bloqueia o arquivo por meio de atributos de sistema de arquivos. Esses atributos operam em nível mais baixo do que as permissões tradicionais gerenciadas por chmod, oferecendo um controle mais rígido sobre a integridade dos dados.

O chattr permite definir propriedades que são suportadas pelo kernel Linux, sendo amplamente utilizado em ambientes produtivos com versões acima do 2.6. Embora seja uma ferramenta poderosa para aumentar a segurança do sistema, ela não deve ser aplicada indiscriminadamente — especialmente em diretórios críticos como /, /dev, /tmp ou /var, onde operações dinâmicas são frequentes.

O lsattr é o complemento direto: exibe os atributos atuais configurados via chattr.

Modos de operação do chattr

Sua sintaxe básica é:

chattr [ -RVf ] [ -v version ] [ mode ] arquivos

O campo mode é o mais importante e consiste em combinações de operadores (+/-/=) com caracteres que representam atributos específicos:

  • +: Adiciona atributos ao conjunto existente.
  • -: Remove atributos do conjunto atual.
  • =: Define o conjunto de atributos exatamente como especificado.
  • a: Permite apenas anexação de dados (append-only). O arquivo só pode receber novos conteúdos, mas não pode ser modificado ou excluído.
  • i: Torna o arquivo imutável. Nenhum processo pode modificá-lo, renomeá-lo, apagá-lo ou adicionar conteúdo. Apenas root ou processos com o privilégio CAP_LINUX_IMMUTABLE podem alterar esse estado.
  • A: Impede alterações no tempo de acesso (access time), útil para reduzir I/O desnecessário em dispositivos móveis.
  • S: Garante escrita sincronizada no disco, semelhante ao sync.
  • c: Habilita compressão transparente durante armazenamento.
  • d: Evita que o arquivo seja incluído em backups feitos pelo utilitário dump.
  • j: Ativa journaling em ssitemas montados com data=ordered ou data=writeback.
  • s: Apaga o conteúdo do arquivo de forma segura, sobrescrevendo todos os blocos de dados.
  • u: Mantém o conteúdo no disco após exclusão, permitindo recuperação posterior.

Exemplos práticos

Proteger um arquivo crítico contra alterações:

chattr +i /etc/resolv.conf

Após isso, tentativas de mover, renomear ou editar o arquivo falharão com "Operation not permitted". Editores como vim exibirão avisos como W10: Warning: Changing a readonly file. Para reverter, use:

chattr -i /etc/resolv.conf

Verifique os atributos atuais com:

lsattr /etc/resolv.conf
# Saída esperada: ----i-------- /etc/resolv.conf

Garantir que um log só aceite novos registros:

chattr +a /var/log/messages

Essa configuração é ideal para arquivos de log, pois impede que qualquer usuário (inclusive root) remova ou substitua o conteúdo existente, preservando a integridade histórica.

Tags: chattr lsattr imutabilidade de arquivos segurança do sistema atributos de arquivos

Publicado em 10-6 07:41