# 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
su
ou 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