Como o 'rm -rf /' pode deletar todos os arquivos no sistema?

5

Eu não consigo pensar em rm -rf / : depois que o kernel e /bin são excluídos, como rm mantém uma pilha de tempo de execução e se comunica com o sistema de arquivos & hardware até completar a exclusão? O rm está estaticamente vinculado a todos os binários necessários e carrega toda a árvore de diretórios do sistema de arquivos na memória quando o comando é iniciado?

    
por Muye 02.04.2015 / 10:43

2 respostas

8

É devido à forma como os nomes dos arquivos e os dados do arquivo são separados. Quando você exclui um arquivo, você está excluindo uma referência nomeada (link físico) para os dados, não para os dados em si. Quando todas as referências sumirem do sistema de arquivos, o kernel irá adiante e liberará os dados - mas somente se nenhum processo em execução tiver o arquivo aberto. Até lá, o arquivo não é realmente excluído, ele não está mais disponível por meio de seu nome de arquivo.

    
por 02.04.2015 / 16:51
0

Não importa que o arquivo do kernel seja excluído, o kernel continuará funcionando até o desligamento, reinicialização ou falha.

Similar acontece com os processos em execução, o mais comum para executáveis ELF é todas as suas dependências (pode ver os arquivos correspondentes correspondentes em execução ldd $(which rm) ) são carregados do sistema de arquivos para o sistema de memória virtual, não liberados da memória pelo menos até todas as instâncias desse processo são feitas. É por isso que a substituição a quente pode ser feita na maioria dos executáveis e bibliotecas.

    
por 28.04.2016 / 10:07

Tags