Comandos chattr e lsattr no Linux: um guia de atributos de ficheiro

Introdução

No Linux, certos atributos de ficheiros e diretórios só podem ser consultados ou modificados com comandos específicos. Estes atributos permitem restringir as operações com ficheiros, como impedir a eliminação ou modificação, mesmo pelo utilizador root. Esta funcionalidade é particularmente útil para proteger ficheiros e diretórios críticos.

Neste guia, vamos abordar dois comandos essenciais:

  • chattr: usado para definir ou remover atributos de ficheiro.
  • lsattr: usado para ver os atributos de ficheiro.

Estes comandos são habitualmente usados em sistemas de ficheiros ext2, ext3 e ext4 e são ferramentas fundamentais para os administradores de sistemas.


O que é o comando chattr ?

O comando chattr permite-te alterar os atributos de ficheiro num sistema de ficheiros Linux. Usa modos simbólicos para adicionar, remover ou definir atributos específicos. Estes atributos podem controlar o comportamento dos ficheiros, por exemplo, tornando-os imutáveis ou só de adição.

Principais funcionalidades de chattr:

  • Proteger ficheiros contra eliminações ou modificações acidentais.
  • Restringir as operações com ficheiros, mesmo para utilizadores root.
  • Permitir gestão avançada de ficheiros e segurança.

Documentação oficial de chattr

Para mais detalhes, consulta a documentação oficial de chattr :
Linux Man Pages – chattr


O que é o comando lsattr ?

O comando lsattr lista os atributos de ficheiros e diretórios num sistema de ficheiros ext2, ext3 ou ext4 . É particularmente útil para resolver problemas quando encontras problemas de acesso a ficheiros.

Principais funcionalidades de lsattr:

  • Ver os atributos de ficheiro num formato fácil de ler.
  • Resolver problemas de acesso e modificação causados pelos atributos de ficheiro.

Documentação oficial de lsattr

Para mais detalhes, consulta a documentação oficial de lsattr :
Linux Man Pages – lsattr


Sintaxe dos comandos

chattr Sintaxe do comando

chattr [ -RVf ] [ -v version ] [ -p project ] [ + | - | = [attributes] ] files...

Explicação:

  • -R: alterar recursivamente os atributos dos diretórios e do seu conteúdo.
  • -V: mostrar a saída detalhada e a versão do programa.
  • -f: suprimir a maioria das mensagens de erro.
  • -v version: definir o número de versão/geração do ficheiro.
  • -p project: definir o número de projeto do ficheiro.
  • +: adicionar os atributos especificados.
  • -: remover os atributos especificados.
  • =: definir os atributos exatamente como especificado.
  • attributes: uma combinação de indicadores de atributo (por exemplo, i, a, etc.).
  • files...: ficheiros ou diretórios de destino.

Exemplos:

  • Adicionar o atributo imutável:chattr +i filename
  • Remover o atributo só de adição:chattr -a filename
  • Definir os atributos exatamente (por exemplo, imutável e só de adição):chattr =ia filename

lsattr Sintaxe do comando

lsattr [ -RVadlpv ] [ files... ]

Explicação:

  • -R: listar recursivamente os atributos dos diretórios e do seu conteúdo.
  • -V: mostrar a versão do programa.
  • -a: listar todos os ficheiros, incluindo ficheiros ocultos (os que começam por .).
  • -d: listar os diretórios como ficheiros normais, em vez de listar o seu conteúdo.
  • -l: imprimir as opções com nomes longos em vez de abreviaturas de uma só letra.
  • -p: listar o número de projeto do ficheiro.
  • -v: listar o número de versão/geração do ficheiro.
  • files...: ficheiros ou diretórios de destino.

Exemplos:

  • Mostrar os atributos de um ficheiro:lsattr filename
  • Mostrar os atributos de todos os ficheiros de um diretório:lsattr /path/to/directory

Atributos de ficheiro comuns e os seus indicadores

A tabela abaixo resume os atributos de ficheiro mais comuns e os seus significados:

AtributoIndicadorDescrição
Só de adiçãoaO ficheiro só pode ser aberto em modo de adição para escrita.
ImutáveliO ficheiro não pode ser modificado, eliminado nem renomeado.
Sem atimeAA hora de acesso ao ficheiro (atime não é atualizada para reduzir a E/S de disco.
Sem dumpdO ficheiro é excluído das cópias de segurança feitas com o programa dump .
Registo de dadosjOs dados do ficheiro são escritos no journal antes de serem escritos no próprio ficheiro.
Atualizações síncronasSAs atualizações do ficheiro são escritas de forma síncrona no disco.
InelimináveluQuando o ficheiro é eliminado, os seus dados são guardados para uma possível recuperação.

Para veres a lista completa de atributos, consulta a página de manual de chattr :
Linux Man Pages – chattr


Resolução de problemas com chattr e lsattr

Problema: não é possível modificar nem eliminar um ficheiro

Se encontrares um erro como este:

E212: Can't open file for writing

Segue estes passos:

  1. Verificar as permissões do ficheiro
    Verifica as permissões do ficheiro com:ls -l filename
  2. Verificar os atributos do ficheiro
    Usa o comando lsattr para verificar se há atributos que possam restringir as modificações:lsattr filename
  3. Remover os atributos restritivos
    Se o ficheiro tiver o atributo i (imutável) ou a (só de adição), remove-o com o comando chattr :chattr -i filename chattr -a filename
  4. Verificar as alterações
    Volta a executar o comando lsattr para confirmar que os atributos foram removidos:lsattr filename

Exemplo prático: a Atributo

Cenário:

Não consegues modificar nem renomear o ficheiro /etc/ssh/known_hosts.

Passos para resolver:

  1. Verifica os atributos do ficheiro:lsattr /etc/ssh/known_hosts
  2. Se o atributo a estiver definido, remove-o:chattr -a /etc/ssh/known_hosts
  3. Verifica que o atributo foi removido:lsattr /etc/ssh/known_hosts
  4. Agora já deves conseguir guardar ou renomear o ficheiro.

Conclusão

O comando chattr e lsattr são ferramentas inestimáveis para gerir os atributos de ficheiro no Linux. Proporcionam uma camada adicional de proteção para ficheiros e diretórios críticos, o que os torna essenciais para os administradores de sistemas. Quer estejas a proteger ficheiros de configuração, quer a resolver problemas de acesso a ficheiros, dominar estes comandos vai melhorar a tua experiência com Linux.

Deixe um comentário