Para o funcionamento correto com arquivos, foram desenvolvidos sistemas de arquivos que permitem definir um padrão único de armazenamento de dados. Isso permitiu resolver problemas de grande volume de dados armazenados, indexação demorada, além de deduplicação e controle de integridade.
Um sistema de arquivos é um conjunto de regras ou um algoritmo pelo qual os dados são organizados e armazenados em determinada forma para que possam ser acessados pelo sistema operacional. Ele também regula o comportamento dos arquivos através de seus atributos e permite definir certos parâmetros que podem proibir a exclusão de arquivos até mesmo pelo usuário root! Vamos analisar seu funcionamento e gerenciamento neste artigo.
Como o sistema de arquivos funciona?
Um dispositivo de armazenamento guarda informações como uma longa sequência de uns e zeros em um sistema binário, onde eles são organizados em grupos graças a uma abstração lógica — o sistema de arquivos. Cada arquivo possui seus próprios cabeçalhos, metadados, atributos e conteúdo — a informação em si.

Ao acessar arquivos, o usuário cria uma chamada de sistema, que é enviada ao kernel do sistema operacional. O kernel interage com o próprio sistema de arquivos, onde lê os atributos necessários. Existem dois tipos de atributos: permissões de acesso e flags de comportamento. Ambos ainda são atributos ou propriedades do arquivo, mas cada um possui sua função.
As permissões padrão rwx, que você vê em todos os lugares, definem regras de acesso de sujeitos a objetos e são usadas em modos de operação de nível superior. Já as flags de comportamento definem opções de como os arquivos serão manipulados e funcionam em um nível inferior. Assim, o root, ao trabalhar com um arquivo que possui a flag -i ou immutable, não poderá excluí-lo ou modificá-lo. A lista completa dos atributos está apresentada na tabela abaixo:
| Atributo | Descrição |
|---|---|
| a (append only) | O arquivo só pode ter dados acrescentados, mas os dados existentes não podem ser alterados ou excluídos. Útil para logs. |
| A (no atime updates) | A última data de acesso ao arquivo não será atualizada. |
| c (compressed) | O arquivo é comprimido no disco. Leitura e escrita ocorrem automaticamente com descompressão e compressão. (Não usado no ext4). |
| d (no dump) | O arquivo não será incluído em arquivos gerados pelo comando dump. |
| D (synchronous directory updates) | As atualizações do conteúdo do diretório ocorrem de forma síncrona, ou seja, são gravadas imediatamente no disco. |
| e (extent format) | O arquivo utiliza o formato estendido de alocação de blocos, que é mais eficiente do que o método antigo. (Usado automaticamente pelo ext4). |
| i (immutable) | O arquivo se torna imutável. Ele não pode ser excluído, renomeado ou ter seu conteúdo alterado. |
| j (data journaling) | Ativa o registro (journaling) de dados para um arquivo específico. Todas as alterações são gravadas primeiro no log e depois no disco. |
| s (secure deletion) | Quando um arquivo é excluído, seu conteúdo é sobrescrito com zeros. (Não implementado na maioria dos sistemas). |
| u (undelete) | Quando um arquivo é excluído, seu conteúdo é preservado e pode ser restaurado. (Não usado no ext4). |
| Z (compressed dirty file) | Indica que um arquivo comprimido foi modificado e precisa ser recompresso. (Não suportado no ext4). |
A lista é bastante extensa, então vamos analisar as principais formas de uso dessas flags na prática!
Gerenciamento de atributos
Se você não possui recursos suficientes, pode executar ações em servidores em nuvem poderosos. A Serverspace fornece servidores VPS/VDS isolados para uso comum e virtualizado.

Vamos imaginar que estamos coletando logs de uma máquina e é importante que ninguém possa alterá-los para preservar a integridade dos dados. Para esse fim, o sistema de arquivos possui um atributo que podemos atribuir a um arquivo:
sudo chattr +a /var/log/auth.log
Você pode verificar se o atributo foi aplicado com:
lsattr /var/log/auth.logDepois disso, não será possível alterar os dados até que um usuário com direitos administrativos remova esse atributo com o comando inverso:
sudo chattr -a /var/log/auth.log
Para proibir a exclusão ou modificação do arquivo, vamos escrever o comando e verificar seu funcionamento:
sudo chattr +i /var/log/auth.log && sudo rm /var/log/auth.log
Imediatamente após o atributo ser aplicado, quando o sistema de arquivos for acessado, ele recusará ações que modifiquem o arquivo. Isso pode ser usado como proteção contra exclusão acidental para administradores ou como uma regra adicional de trabalho para usuários comuns que já têm acesso aos arquivos.
Também é possível ativar journaling para arquivos, permitindo registrar a lista de ações em um log separado. Isso ajuda a restaurar a integridade do sistema. No entanto, essa função costuma ser especificada diretamente na instalação do sistema de arquivos.
Esses atributos permitem adicionar funcionalidades de baixo nível que apenas o administrador pode alterar. Eles substituem o sistema tradicional de permissões ao aplicar regras globalmente para todos os usuários. Essa solução é útil quando um invasor obtém acesso a uma conta que, pelas permissões, poderia modificar arquivos — mas isso é proibido pelo atributo do sistema de arquivos, exceto para o root.
Os atributos estendidos de arquivos no Linux oferecem um mecanismo poderoso para gerenciar o comportamento dos arquivos além das permissões padrão. Com flags como immutable (-i) ou append-only (+a), administradores podem fortalecer significativamente a segurança do sistema, proteger logs contra adulterações e evitar exclusão acidental de arquivos críticos. Esses atributos funcionam em um nível mais baixo do que os direitos tradicionais rwx, garantindo um controle mais granular. O uso adequado de atributos estendidos pode servir como uma camada adicional de segurança, especialmente em casos de comprometimento de contas de usuários.
Ao entender e aplicar corretamente esses atributos, administradores podem melhorar a integridade dos dados, reforçar o controle de acesso e reduzir riscos de alterações não autorizadas.
FAQ
Q1: O que são atributos estendidos no Linux?
Atributos estendidos são propriedades de baixo nível (flags) que definem regras de comportamento além das permissões padrão, como impedir exclusão ou forçar modo somente acréscimo.
Q2: Como os atributos estendidos diferem das permissões rwx?
As permissões rwx controlam níveis de acesso para usuários, grupos e outros. Os atributos estendidos substituem esse modelo aplicando restrições globais que até o root deve respeitar.
Q3: Como posso verificar os atributos de um arquivo?
Use o comando:
lsattr filenameQ4: O root pode ignorar os atributos estendidos?
O root não pode alterar ou excluir arquivos com flags +i ou +a definidas. Porém, o root pode remover essas flags com chattr -i ou chattr -a, após o que as operações normais ficam disponíveis.
Q5: Quando devo usar o atributo immutable?
Use +i quando for necessário proteger completamente arquivos importantes contra exclusão ou modificação, como arquivos críticos de configuração ou logs de segurança.
Q6: Todos os sistemas de arquivos Linux suportam atributos estendidos?
Não. O suporte depende do tipo de sistema de arquivos. Ext2, ext3 e ext4 suportam, mas nem todos implementam o mesmo conjunto de atributos.