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

16

Eu tenho um exame de diretório com 2 arquivos. Eu preciso excluir arquivos, mas a permissão é negada. Mesmo o comando rm -rf não pode excluir esses arquivos. Eu fiz o login como usuário root.

    
por Mongrel 31.05.2015 / 05:30

2 respostas

26

De atributos de verificação de usuário raiz de arquivos

# lsattr 

Se você perceber i (imutável) ou a (somente anexo), remova esses atributos:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
    
por 31.05.2015 / 05:31
12

O motivo mais comum para rm reclamar 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 ( rm sem -f solicita 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 o OSX (mas não o Linux), a ACL em um arquivo pode impedir sua exclusão; ls -l mostraria @ no final do campo de permissão se houvesse uma entrada ACL no arquivo.

O acesso como root ignora as permissões, portanto, o root pode excluir arquivos até mesmo em um diretório somente leitura.

A saída de ls -l mostra um . no final da coluna de permissão. Isso indica que o arquivo possui um contexto de segurança do SELinux. Ao contrário das permissões básicas e da ACL, o contexto de segurança do SELinux em um arquivo pode controlar quem pode excluí-lo. Além disso, o SELinux nem sempre pode ser ignorado pelo root (é possível ter um processo sendo executado como ID do usuário 0, mas com tão poucos direitos quanto o designer de políticas 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 tem o Linux único ou imutável. atributo . Execute lsattr -d . exam_a para visualizar os atributos do Linux. Se o atributo a ou i estiver ativado, você precisará removê-lo ( chattr -a -i . exam_a ) para excluir o arquivo; apenas root pode fazer isso. A raiz não pode ignorar esses atributos para excluir um arquivo, os atributos precisam ser desativados primeiro.

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

    
por 31.05.2015 / 23:33