Não consigo remover uma árvore de diretórios com rm -rf

9

Isso me parece muito estranho. Estou executando o kernel 2.6.37.2 e executei:

~]$ cp -r /proc/ here
~]$ rm -rf here

Recebo algumas permissões negadas ao copiar conforme o esperado e, eventualmente, pressione Control-C. Recebo Permission deniedmuitos arquivos ao tentar remover o novo diretório e arquivos.

Como observação, eu achei esse comportamento estranho, porque um amigo me enviou .tgzum instantâneo de seu /procdiretório. Extraí o diretório e, quando terminei de examiná-lo, tive o mesmo problema.

rm -rf como root funciona.

lsattr mostra o atributo e (que é o que todos os meus arquivos / diretórios mostram).

flumpb
fonte
Generalizei um pouco o título da sua pergunta porque o principal problema não é esse /proc. A propósito, é um pouco tarde para esse momento, mas se você descobrir a resposta depois de postar a pergunta, não há problema em responder você mesmo e deixar para outras pessoas que possam ter um problema semelhante.
Gilles 'SO- stop be evil'

Respostas:

16

Se houver um diretório não vazio em que você não tenha permissão de gravação, não poderá remover o conteúdo.

$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied

O motivo é que ele rmestá vinculado a permissões como qualquer outro comando, e a permissão para remover barrequer permissão de gravação foo. Isto não se aplica ao executar rmcomo root por causa raiz sempre tem a permissão para remover um arquivo.

Para tornar a árvore de diretórios deletável, torne todos os diretórios graváveis ​​(as permissões de arquivos regulares não importam quando se trata de exclusão rm -f). Você pode usar um destes comandos:

chmod -R u+w here        # slow if you have a lot of regular files
find here -type d -exec chmod u+w {} +
Gilles 'SO- parar de ser mau'
fonte
Ainda o mesmo resultado "Operação não permitida"
Legionar