Às vezes é necessário evitar que todos os usuários, incluindo o root, excluam um arquivo. Isso geralmente é feito alterando os atributos do arquivo em um sistema de arquivos Linux. A ferramenta usada para alterar atributos de arquivos no Linux e em outros sistemas Unix é chattr
O formato de um modo simbólico é +-=[acdeijstuADST]
. O formato de um modo simbólico é +-=[acdeijstuADST] e eles selecionam os novos atributos para
os arquivos.
- O operador ‘+’ faz com que os atributos selecionados sejam adicionados
aos atributos existentes dos arquivos - '-' faz com que eles sejam removidos
- '=' faz com que eles sejam os únicos atributos que os arquivos possuem.
Veja a explicação de todas as letras usadas abaixo:
a - append only c - compressed d - no dump e - extent format i - immutable j - data journalling s - secure deletion t - no tail-merging u - undeletable A - no atime updates D - synchronous directory updates S - synchronous updates T - top of directory hierarchy
Quando um diretório ou arquivo tem atributos imutáveis definidos, você receberá o erro “Permissão negada ” ao tentar excluir os arquivos subjacentes. Se o atributoi
(bit imutável) estiver definido em um arquivo, nem mesmo o root poderá modificá-lo.
Simule a exclusão do arquivo “Operação não permitida” no Linux
Crie um diretório em /tmp
mkdir /tmp/testdir
Toque em um arquivo no diretório
touch /tmp/testdir/testfile
Definir atributo somente acréscimo
sudo chattr +a /tmp/testdir/testfile
Para uma pasta e seu conteúdo, use a opção -R
para alteração recursiva
sudo chattr -R +a /tmp/testdir/
Ver atributos do arquivo
$ lsattr /tmp/testdir/testfile -----a---------- testdir/testfile
Tente excluir a pasta
$ rm -f /tmp/testdir/testfile rm: cannot remove ‘testfile’: Operation not permitted
Remover atributo somente de acréscimo
sudo chattr -a /tmp/testdir/testfile
Agora você deve conseguir excluir o arquivo
rm -f /tmp/testdir/testfile
Isso funciona da mesma forma para o atributoimutável (i).
sudo chattr -i /tmp/testdir/testfile rm -f /tmp/testdir/testfile