Por que não consigo excluir este arquivo como root?

20

Eu tenho exame de diretório com 2 arquivos nele. Preciso excluir arquivos, mas a permissão é negada. Mesmo o rm -rfcomando não pode excluir esses arquivos. Eu entrei como um usuário root.

insira a descrição da imagem aqui

Mongrel
fonte
13
(1) Por favor, poste texto do Terminal como texto, se possível. Idealmente, copie e cole. Se você não tem como capturar o texto, exceto transcrevê-lo manualmente, faça-o, mas divulgue-o e inclua a imagem de captura de tela para que possamos verificar novamente sua digitação. (2) Quando você tem uma pergunta sobre permissões, por favor, sempre, que ls -la, para que possamos ver as permissões .(agenda).
G-Man diz 'Reinstate Monica'

Respostas:

39

Do usuário root, verifique os atributos dos arquivos

# lsattr 

se você notar i(imutável) ou a(somente anexar), remova esses atributos:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Invoker
fonte
1
Uau, isso foi complicado. Obrigado por postar esta solução; Eu estava no meu juízo final. Eu tinha certeza de que isso foi de alguma forma relacionado com a minha sincronização uníssono; foi deixado em um estado 'desconhecido' (devido a várias razões), e isso significava que os diretórios que não consegui excluir foram configurados (por uníssono) para serem apenas anexados (isso é típico de uníssono). Mas eu não tinha ideia de como exibir / redefinir esse modo somente de acréscimo! Você era um salva-vidas; Espero que o cartaz original também tenha seu problema resolvido.
Gwyneth Llewelyn
Este é um salva-vidas.
Luka
16

O motivo mais comum para rmreclamar que você não tem permissão para excluir um arquivo é que as permissões no diretório proíbem a exclusão do arquivo. Para excluir um arquivo, você precisa de permissão de gravação no diretório. As permissões no arquivo são irrelevantes ( rmsem -fsolicitações de confirmação antes de excluir um arquivo somente leitura, mas isso é apenas uma confirmação, não uma limitação). Em algumas variantes do Unix, como OSX (mas não Linux), a ACL em um arquivo pode impedir sua exclusão; ls -lapareceria @no final do campo de permissão se houvesse uma entrada ACL no arquivo.

O acesso como root ignora as permissões, de modo que o root pode excluir arquivos mesmo em um diretório somente leitura.

A saída de ls -lmostra a .no final da coluna de permissão. Isso indica que o arquivo possui um contexto de segurança SELinux. Diferentemente das permissões básicas e da ACL, o contexto de segurança do SELinux em um arquivo pode controlar quem tem permissão para excluí-lo. Além disso, o SELinux nem sempre pode ser ignorado pelo root (é possível ter um processo sendo executado como ID de usuário 0, mas com tão poucos direitos quanto o designer de política do SELinux escolheu). Para ver o que o contexto do SELinux permite, execute ls -lZ . exam_a.

Outra coisa que pode impedir que um arquivo seja excluído é se ele ou o diretório que o contém possui o atributo Linux somente anexado ou imutável . Execute lsattr -d . exam_apara visualizar os atributos do Linux. Se o atributo aou iestiver ativado, será necessário removê-lo ( chattr -a -i . exam_a) para excluir o arquivo; somente a raiz pode fazer isso. A raiz não pode ignorar esses atributos para excluir um arquivo; os atributos devem ser desativados primeiro.

Outra coisa que impede que um arquivo seja excluído é se o sistema de arquivos estiver montado como somente leitura, mas você receberá uma mensagem de erro diferente nesse caso.

Gilles 'SO- parar de ser mau'
fonte