# rm -rf /path/to/undeletable rm: cannot remove ‘/path/to/undeletable’: Is a directory
rm chamadas stat(2) para verificar se /path/to/undeletable é um diretório (a ser excluído por rmdir(2) ) ou um arquivo (a ser excluído por unlink(2) . Como a chamada stat falha (nós Veremos porque em um minuto), rm decide usar unlink , o que explica a mensagem de erro.
# rmdir /path/to/undeletable rmdir: failed to remove ‘/path/to/undeletable’: Device or resource busy
"Dispositivo ou recurso ocupado", não "Diretório não vazio". Portanto, o problema é que o diretório é usado por algo, não que contenha arquivos. O mais óbvio "usado por alguma coisa" é que é um ponto de montagem.
# lsof +D /path/to/undeletable lsof: WARNING: can't stat(/path/to/undeletable): Permission denied
Isso confirma que stat no diretório falhou. Por que root teria falta de permissão? Essa é uma limitação do FUSE: a menos que seja montado com a opção allow_other , os sistemas de arquivos FUSE só podem ser acessados por processos com o mesmo ID de usuário que o processo que fornece o driver FUSE. Até o root é atingido por isso.
Portanto, você tem um sistema de arquivos FUSE montado por um usuário não-root. O que você quer fazer?
-
O mais provável é que você esteja apenas incomodado com esse diretório e queira desmontá-lo. Raiz pode fazer isso.
umount /path/to/undeletable -
Se você quiser se livrar do ponto de montagem, mas manter a montagem, mova-o com
mount --move. (Somente Linux)mkdir /elsewhere/undeletable chown bob /elsewhere/undeletable mount --move /path/to/undeletable /elsewhere/undeletable mail bob -s 'I moved your mount point' -
Se você quiser excluir os arquivos desse sistema de arquivos, use
suou qualquer outro método para alternar para esse usuário e exclua os arquivos.su bob -c 'rm -rf /path/to/undeletable' -
Se você deseja excluir os arquivos ocultos pelo ponto de montagem sem interromper a montagem, crie outra visualização sem o ponto de montagem e exclua os arquivos de lá. (Somente Linux)
mount --bind /path/to /mnt rm -rf /mnt/undeletable/* /mnt/undeletable/.[!.]* /mnt/undeletable/..?* umount /mnt