Como usar o comando chattr no Linux

Junto com as permissões usuais de leitura, gravação e execução em arquivos, os arquivos Linux têm outro conjunto de atributos que controlam outras características do arquivo. Veja como visualizá-los e alterá-los.

índice

  1. Permissões e atributos
  2. Observando os atributos de um arquivo
  3. Alterar os atributos de um arquivo
    1. Adicionar apenas configuração de atributo
    2. Configuração de atributo imutável
  4. Não confie na exclusão segura no ext4
  5. Útil, mas use com cautela

Permissões e atributos

No Linux, quem pode acessar um arquivo e o que pode fazer com ele é controlado por um conjunto de permissões . Se você pode ler o conteúdo de um arquivo, gravar novos dados no arquivo ou executar um arquivo se for um script ou um programa, tudo é governado por esse conjunto de permissões. As permissões se aplicam ao arquivo, mas definem as restrições e recursos para diferentes categorias de usuários.

Existem permissões para o dono do arquivo, para o grupo do arquivo e para outros , ou seja, usuários que não estão nas duas primeiras categorias. Você pode usar o comando ls com a opção -l (lista longa) para visualizar as permissões em um arquivo ou diretório.

Para alterar as permissões, use o domínio chmod . Pelo menos você pode se tiver permissões de gravação no arquivo ou se for o usuário root.

Podemos ver que as permissões de arquivo são centradas no usuário porque concedem ou removem permissões no nível do usuário. Em contraste, os atributos de um arquivo são centrados no sistema de arquivos. Assim como as permissões, elas são definidas no arquivo ou diretório. Mas uma vez configurados, eles são os mesmos para todos os usuários.

Os atributos são uma coleção separada de configurações de permissão. Atribui recursos de controle, como imutabilidade e outros comportamentos no nível do sistema de arquivos. Para ver os atributos de um arquivo ou diretório usamos o domínio lsattr . Para definir os atributos usamos o domínio chattr .

Permissões e atributos são armazenados dentro de inodes . Um inode é uma estrutura de sistema de arquivos que contém informações sobre objetos do sistema de arquivos, como arquivos e diretórios. A localização de um arquivo no disco rígido, sua data de criação, permissões e atributos são armazenados em seu inode.

Como diferentes sistemas de arquivos têm diferentes estruturas e recursos subjacentes, os atributos podem se comportar de maneira diferente ou ser totalmente ignorados por alguns sistemas de arquivos. Neste artigo, estamos usando o ext4 , que é o sistema de arquivos padrão para muitas distribuições Linux.

Observando os atributos de um arquivo

Os comandos chattr e lsattr já estarão presentes no seu computador, então não há necessidade de instalar nada.

Para verificar os atributos dos arquivos no diretório atual, use lsattr :

 lsattr

As linhas tracejadas são espaços reservados para atributos que não estão definidos. O único atributo definido é o atributo e (extensões). Isso mostra que os inodes do sistema de arquivos estão usando, ou usarão, se necessário, extensões para apontar para todas as partes do arquivo no disco rígido.

Se o arquivo for mantido em uma sequência contígua de blocos de disco rígido, seu inode só precisa gravar o primeiro e o último bloco usado para armazenar o arquivo. Se o arquivo estiver fragmentado, o inode deve registrar o número do primeiro e do último bloco de cada parte do arquivo. Esses pares de números de bloco de disco rígido são chamados de extensões.

Esta é a lista dos atributos mais usados.

  • para : Anexar apenas. Um arquivo com este atributo só pode ser adicionado. Ele ainda pode ser escrito, mas apenas no final do arquivo. Não é possível sobrescrever nenhum dos dados existentes no arquivo.
  • C: Comprimido. O arquivo é compactado automaticamente no disco rígido e descompactado quando é lido. Os dados gravados em arquivos são compactados antes de serem gravados no disco rígido.
  • FOR : Nenhuma atualização de atime atime é um valor em um inode que registra a última vez que um arquivo foi acessado.
  • C. : Nenhuma cópia por escrito. Se dois processos solicitarem acesso a um arquivo, eles poderão receber ponteiros para o mesmo arquivo. Eles só recebem sua própria cópia exclusiva do arquivo se tentarem gravar no arquivo, tornando-o exclusivo para esse processo.
  • d : Sem despejo. O comando linux dump é usado para gravar cópias de sistemas de arquivos inteiros na mídia de backup. Este atributo faz com que o dump ignore o arquivo. Ele é excluído do backup.
  • D. : Atualizações de diretório síncronas. Quando esse atributo é habilitado para um diretório, todas as alterações nesse diretório são gravadas de forma síncrona, ou seja, imediatamente, no disco rígido. As operações de dados podem ser armazenadas em buffer.
  • Y : formato de extensão. l e O atributo indica que o sistema de arquivos está usando extensões para atribuir a localização do arquivo no disco rígido. Você não pode alterar isso com chattr . É uma função de como o sistema de arquivos funciona.
  • o : Imutável. Um arquivo imutável não pode ser modificado, incluindo renomeação e exclusão. O usuário root é a única pessoa que pode definir ou desabilitar este atributo.
  • sim : exclusão segura. Quando um arquivo com este conjunto de atributos é excluído, os blocos no disco rígido que continham os dados do arquivo são substituídos por bytes contendo zeros. Observe que isso não é respeitado pelo sistema de arquivos ext4
  • S. : Atualizações síncronas. As alterações em um arquivo com seu conjunto de atributos S são gravadas no arquivo de forma síncrona.
  • tu : Excluir um arquivo que tem seu atributo u definido faz com que uma cópia do arquivo seja feita. Isso pode ser benéfico para a recuperação de arquivos se o arquivo foi excluído por engano.

Alterar os atributos de um arquivo

l chattr O comando nos permite alterar os atributos de um arquivo ou diretório. Podemos usar os operadores + (set) e - (unset) para aplicar ou remover um atributo, semelhante ao comando e permissões chmod .

O comando chattr também tem um operador = (set only). Isso configura os atributos de um arquivo ou diretório apenas para os atributos especificados no comando. Ou seja, todos os atributos não listados na linha de comando são um conjunto .

Adicionar apenas configuração de atributo

Vamos definir o atributo add-only em um arquivo de texto e ver como isso afeta o que podemos fazer com o arquivo.

 sudo chattr +a arquivo de texto.txt

Podemos verificar se o bit de adição foi definido usando lsattr :

 lsattr arquivo-texto.txt

A letra " a Indica que o atributo foi definido. Vamos tentar sobrescrever o arquivo. Redirecionar a saída para um arquivo com um único colchete angular " > "Substitui todo o conteúdo do arquivo pela saída redirecionada.

Nós pré-carregamos o arquivo de texto com algum texto de espaço reservado lorem ipsum .

 cat arquivo-texto.txt 

Vamos redirecionar a saída de ls para o arquivo:

 ls -l > arquivo-texto.txt
 sudo ls -l > arquivo-texto.txt 

A operação não é permitida, mesmo se usarmos o domínio sudo .

Se usarmos dois colchetes angulares " >> "para redirecionar a saída, ela será adicionada aos dados existentes no arquivo. Isso deve ser aceitável para nosso arquivo de texto somente para adição.

 sudo ls -l >> arquivo-texto.txt

Retornamos ao prompt de comando sem nenhuma mensagem de erro. Vamos dar uma olhada dentro do arquivo para ver o que aconteceu.

 cat arquivo-texto.txt

A saída redirecionada de ls foi adicionada ao final do arquivo.

Embora possamos adicionar dados ao arquivo, essa é a única alteração que podemos fazer nele. Não podemos removê-lo e também não podemos fazer root.

 rm arquivo-texto.txt
 sudo rm arquivo de texto.txt

Configuração de atributo imutável

Se você deseja proteger um arquivo que nunca terá novos dados adicionados a ele, você pode definir o atributo imutável. Isso impede todas as alterações no arquivo, incluindo a adição de dados.

 sudo chattr +i segundo arquivo.txt
 lsattr segundo arquivo.txt

Podemos ver o " i Indica que o atributo imutável foi definido. Tendo tornado nosso arquivo imutável, mesmo o usuário root não pode renomear ( mv ), abri-lo ( rm ) ou adicionar dados a ele.

 sudo mv segundo arquivo.txt novo-nome.txt
 sudo rm segundo arquivo.txt
 sudo ls -l >> segundo arquivo.txt

Não confie na exclusão segura no ext4

Conforme observado, alguns sistemas operacionais não suportam todos os atributos. O atributo safe-delete não é respeitado pela família ext de sistemas de arquivos, incluindo ext4 . Não confie nisso para exclusão segura de arquivos.

É fácil ver que isso não funciona em ext4 . vamos definir o atributo s (exclusão segura) em um arquivo de texto.

 sudo chattr +s terceiro arquivo.txt

O que vamos fazer é descobrir o inode que contém os metadados deste arquivo. O inode contém o primeiro bloco de disco rígido ocupado pelo arquivo. O arquivo contém algum texto de espaço reservado lorem ipsum .

Leremos esse bloco diretamente do disco rígido para verificar se estamos lendo o local correto no disco rígido. Vamos excluir o arquivo e ler o mesmo bloco de imersão mais uma vez. Se o atributo deletesafe for respeitado, devemos ler os bytes zerados.

Podemos encontrar o inode do arquivo usando o comando hdparm com a --fibmap (mapa de bloco de arquivo).

 sudo hdparm --fibmap terceiro arquivo.txt

O primeiro bloco de disco rígido é 18100656. Usaremos o comando dd para lê-lo.

As opções são:

  • si = /dev/sda : Lê a partir do primeiro disco rígido neste computador.
  • bs=512 – Use um tamanho de bloco de disco rígido de 512 bytes.
  • skip = 18100656 : Ignora todos os blocos antes do bloco 18100656. Em outras palavras, comece a ler no bloco 18100656.
  • count = 1 : Lê um bloco de dados.
 sudo dd if=/dev/sda bs=512 pular=18100656 contagem=1

Como esperado, vemos o texto do espaço reservado lorem ipsum . Estamos lendo o bloco correto no disco rígido.

Agora vamos deletar o arquivo.

 rm terceiro arquivo.txt

Se lermos esse mesmo bloco de disco rígido, ainda poderemos ver os dados.

 sudo dd if=/dev/sda bs=512 pular=18100656 contagem=1

Novamente, não confie nisso para exclusão segura no ext4 . Existem métodos melhores disponíveis para excluir arquivos para que eles não possam ser recuperados.

Útil, mas use com cautela

Definir atributos de arquivo pode torná-los imunes a desastres acidentais. Se você não pode excluir ou substituir um arquivo, é bastante seguro.

Você pode pensar que gostaria de aplicá-los aos arquivos do sistema e tornar sua instalação do Linux mais segura. Mas os arquivos do sistema devem ser substituídos periodicamente à medida que as atualizações são emitidas ou aplicadas. Por esse motivo, é mais seguro usar esses atributos apenas em arquivos de sua própria criação.

  • Os melhores tripés de 2022
  • O novo aspirador de pó robô Q5+ da Roborock faz (quase) tudo por menos

descubra mais conteúdo

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão Geek

O que é uma carga fantasma?

O que o comando chattr faz?

chattr é uma ferramenta de linha de comando para alterar atributos de arquivo em um sistema de arquivos Linux.

Quais usuários podem usar o comando chattr no Linux?

O comando chattr no Linux é um comando do sistema de arquivos usado para alterar os atributos de um arquivo em um diretório. O principal uso deste comando é tornar vários arquivos não modificáveis ​​para usuários que não sejam o usuário root.

Ir arriba