Como resolver exclusão de arquivo “Operação não permitida” no Linux

À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

Atualizado em 08/02/2024
Este artigo foi útil?  
Agradecemos sua avaliação.