Eu sempre me perguntei até onde o sistema realmente chegaria se você executar rm -rf /
. Duvido que o sistema operacional possa se apagar (?)
Pergunta bônus : Depois que o comando for executado, ele será rm
removido?
Atualização: testei isso em algumas das principais distribuições unix usando o VirtualBox e as respostas descrevem exatamente o que acontece. Se os parâmetros corretos forem fornecidos, a rm removerá todos os bits físicos de dados do disco. No entanto, tive alguns problemas ao usar uma versão do rm diferente da GNU. Por exemplo, acredito que o BusyBox tem sua própria versão e não permite remover o máximo possível.
Esta pergunta foi uma pergunta da semana para superusuários .
Leia a entrada do blog de 7 de julho de 2011 para obter mais detalhes ou envie sua própria pergunta da semana.
fonte
sudo rm -rf /
tinycore / microcore linux e parece que o sistema operacional protege vários diretórios (/ sys e outros) da exclusão.rm -f /bin/rm
uma vez. Infelizmente, funcionou, e passei a próxima hora obtendo a versão correta derm
volta do GNU coreutils.Respostas:
Se você possui o
rm
GNU coreutils (provavelmente se é uma distribuição Linux normal),rm -rf /
será recusado pela proteção integrada (de acordo com o manual e a Wikipedia, ainda não tentei).Você pode substituir essa proteção por
--no-preserve-root
.rm
irá remover tudo o que puder, sem parar depois de tentar remover todos os arquivos. Claro que não removerá sistemas de arquivos virtuais como/proc
e/sys
, mas isso é irrelevante - removerá tudo no seu disco.Após a conclusão do comando, seu disco será limpo vazio, incluindo o sistema operacional. O kernel e os processos atuais continuarão sendo executados a partir da memória, mas muitos processos morrerão porque não conseguirão acessar algum arquivo. O SO falhará ao inicializar na próxima vez.
fonte
--no-preserve-root
porque isso geralmente não é mencionado.Para quem gosta de fazer coisas assim visualmente enquanto ouve música techno.
Executando rm-rf no Linux (vídeo)
Pontos de bônus se você puder nomear os processos quando eles começarem a morrer.
fonte
Configurar uma VM e tentar se divertir?
Vai muito longe ... se você estiver usando um GUI, poderá se divertir percebendo que as coisas se degradam mais visivelmente. (os ícones nos menus param de carregar, etc.)
Se você deixar para lá, o sistema operacional estará praticamente além da recuperação, embora você possa recuperar alguns dados facilmente.
De qualquer forma, você desejará reinstalar o sistema operacional.
fonte
Bem, experimentá-lo em http://bellard.org/jslinux/ produz:
fonte
Lembro-me de ter sido devorada
alt.sysadmin.recovery
nos dias de outrora, quando não existia/proc
, e/dev
era apenas um diretório regular contendo entradas para vários inodes incomuns ...... mas, em algumas variantes de Unix (minha lembrança é HP-UX, mas que poderia ser totalmente errado), você pode não remover a última entrada de diretório para um programa que estava sendo executado. (Bibliotecas compartilhadas? O que são essas?)
Em tais sistemas, se você começou um up no modo de manutenção (para que nada estava funcionando, mas sua concha, nem mesmo
init
, e sem sistemas de arquivos secundários foram montados) e seexec /bin/rm -rf /
, você ficaria com um sistema de arquivos raiz completamente vazio , exceto que/bin
e/bin/rm
seria sobreviver.Os habitantes do mosteiro assustador do diabo consideraram isso apropriado e adequado.
fonte
rm -rf /
não deve ser permitido em implementações recentes, pois foi sugerido que viola o padrão POSIX:"
rm -rf /
" proteção no blog Oraclefonte
/foo/..
, mesmo se você não está em/foo
. Ele não especifica que você não tem permissão para remover o diretório atual (por exemplorm -r `pwd`
) ou o pai do diretório atual.Um ponto que não vi de mais ninguém: os arquivos que estão abertos no momento (por exemplo, a própria rm), mesmo que sejam excluídos, na verdade não desaparecem do disco até serem fechados.
fonte
rm
irá remover-se dos fs - o programa está completamente carregado na memória, não o arquivoPor ter tentado uma vez (em um servidor que me irrita), registrado como root, no terminal, você perderá quase tudo. A única coisa que não será apagada será apenas o processo essencial para o sistema operacional.
fonte
/boot
,/sbin
,/etc
,/bin
,/vmlinuz
? Bam, se foi. Boa sorte ao inicializar sem eles - na verdade, boa sorte fazendo qualquer coisa assim que a exclusão for concluída.chmod -fR 777 /
é prejudicial porque desativa os bits setuid e setgid.Até onde você pode chegar, depende basicamente das distribuições específicas do Unix / Linux.
Mas, para responder à sua pergunta básica, o
rm
comando yes - seria removido com ele, assim como qualquer outro comando padrão dentro/bin
e outras pastas.Aqui está o teste simples que eu executei no Linux Ubuntu 15.04 usando VM.
Inicialize a máquina virtual via
vagrant
:Então, quando você está tentando remover todos os arquivos da maneira padrão, não permite:
Então vamos tentar
--no-preserve-root
. Sempre verifiquevagrant@vagrant-ubuntu-vivid-64:~$
novamente se você está conectado à máquina virtual (para ter ) e depois execute (não tente fazer isso em casa):Depois disso, ele volta ao prompt do shell como se nada tivesse acontecido, mas você não pode mais executar nenhum comando além de alguns integrados e
kill
, para que você possa terminar seu trabalho e encerrar sua sessão :)Por exemplo:
Então é muito removido tudo, inclusive
rm
,ls
e todos os outros comandos, mas ainda assim você está conectado. Existem algumas pastas especiais que não foram removidas, como alguns dispositivos/dev
,/proc
ou/sys
que não são diretórios / arquivos regulares, mas o pseudo-sistema de arquivos fornece interfaces para processar e processar dados do kernel.Se você não possui o Vagrant ou o Linux, pode jogar com alguns emuladores JavaScript Linux x86 .
Se você estiver interessado nas possibilidades de se recuperar desse desastre, verifique:
fonte