Quão longe você pode ir com rm -rf / como root

23

Se você é root e emite

rm -rf / 

Então, até onde o comando pode ir? Você pode recuperar dados desse tipo de ação? Mesmo depois que os binários terminarem, os processos em execução ainda estarão ativos? O que seria necessário para fazer a mesma máquina física inicializar novamente? Quais arquivos você precisa restaurar para fazer isso acontecer?

Eu poderia tentar isso em uma VM e ver, mas quero conhecer a lógica por trás do que esperar se fizer isso.

Sudipta Chatterjee
fonte
3
Duplicado de: superuser.com/questions/312769/…
Stéphane Gimenez
1
@Ste É verdade, mas enquanto não é copiar / colar geralmente deixá-lo ir, uma vez que temos alguma sobreposição com outros sites
Michael Mrozek

Respostas:

21

Este comando não faz nada, pelo menos no sistema operacional que eu uso (Solaris) com o qual esse recurso de segurança foi implementado pela primeira vez:

# rm -rf /
rm of / is not allowed

Em outro * nix, especialmente a família Linux, se um Gnu rm recente o suficiente for fornecido, você precisará adicionar a --no-preserve-rootopção para permitir que o comando seja concluído (ou pelo menos inicie).

Até onde esse comando deve ir é indefinido. Depende de muitos eventos mais ou menos imprevisíveis. Geralmente, os processos podem ser executados mesmo após a remoção dos binários.

jlliagre
fonte
5
Não acreditei em você a princípio, mas aí está . É difícil acreditar que foram necessários até 2005 (Sun / BSD) e 2006 (GNU) para impedir que esse erro horrível acontecesse.
Amphetamachine
3
Você ainda pode usar rm -rf /*para eliminar qualquer coisa
Felix Yan
1
De fato, mas nesse caso não há nada que o rm possa (facilmente) fazer, pois a expansão do arquivo já é feita pelo shell antes que o rm seja chamado.
jlliagre
4

Mesmo com a excelente resposta de jlliagre, lembre-se de que isso ainda é uma coisa bastante perigosa a se fazer. Sempre verifique onde você está antes de fazer coisas como rm -rf. Seria catastrófico se você estivesse rm -rf *no diretório / usr, por exemplo.

Quanto ao restante de suas perguntas, o que você pode recuperar depende muito dos procedimentos de backup. Na maioria dos sistemas * nix, não há uma maneira simples de recuperar arquivos e diretórios depois que eles forem excluídos. Ao contrário dos velhos dias do DOS em que os arquivos ainda estavam no disco após a exclusão, a maioria dos sistemas atualmente faz coisas que dificultam a recuperação. Esse é um dos motivos pelos quais os serviços de recuperação de dados são tão caros.

Se você estiver usando uma VM, eu recomendo fazer snapshots de vez em quando, no mínimo. Mas nada pode superar seguindo um bom plano de backup.

OldTimer
fonte
2

Como algumas pessoas disseram, você ainda pode usar sudo rm -rf /*para remover qualquer coisa. Sem o asterisco também funciona no OS X. Alguém fez um vídeo sobre a destruição do OS X Yosemite assim, e tenho certeza que o SO baseado em Linux terá a mesma experiência.

As coisas lentamente começam a ficar irresponsivas. Não acho que tudo tenha sido excluído, pois o terminal congelou enquanto o processo estava acontecendo, mas foi o suficiente para congelar a coisa toda e reiniciar a força.

Tentar reiniciar causa um modo de usuário único como a tela de inicialização com erros.

TheBro21
fonte
1
Se isso pode dar algum consolo, sudo rm -rf /*não exclua os arquivos e diretórios ocultos /. Também falharia ao excluir arquivos mascarados por outro ponto de montagem, arquivos em sistemas de arquivos somente leitura ou pseudo-sistemas de arquivos, arquivos imutáveis ​​ou pontos de montagem.
Stéphane Chazelas
@ StéphaneChazelas Isso também foi exibido nas filmagens. Ocorreram erros no sistema de arquivos somente leitura. Apesar de não exclusão de tudo, foi o suficiente para congelar e destruir boot (de sistema, não EFI)
TheBro21
2

Eu apenas tentei com o Ubuntu 16 e a estação de trabalho vmware e, com a opção no-preserve-root, ele apagou todo o disco do meu sistema Linux em execução. depois disso, todo o aplicativo da estação de trabalho vmware se tornou inutilmente instável e até mesmo desligar ou redefinir a máquina virtual do aplicativo era impossível. Ao matar o vmx foi recusado, apenas uma reinicialização do host funcionou depois disso!

Ameaça
fonte
Agradável! :) Era isso que eu esperava ouvir de alguém.
Sudipta Chatterjee
1

Não se pode simplesmente destruir seu sistema emitindo rm -rf /como root. Inicialmente, o comando será emitido no modo à prova de falhas, que restringirá o uso de rmon, /mas mesmo com --no-preserve-rootargumento, o sistema em execução não permitirá a remoção dos processos em execução do disco; no entanto, o restante dos programas e arquivos será removido, deixando um sistema inutilizável com (quase) nenhum programa para executar! Por favor, verifique as capturas de tela aqui, o comando foi emitido no Arch Linux no Virtual Box: http://bit.ly/q9CsA4

Abhisek De
fonte
Você pode carregar as fotos em algum lugar? Baixar um alcatrão, descompactar e visualizar todos os arquivos não é algo que a maioria das pessoas fará. Oh e Redutores de URL não são permitidos no SE, use sempre a ligação real
TheLQ
3
Você escreveu: "o sistema em execução não permitirá remover processos em execução do disco". No que diz respeito ao * nix, isso está incorreto. Essa limitação existe no Windows, mas você pode remover (desvincular) arquivos no Unix / Linux, mesmo enquanto eles são executados.
Jlliagre
2
"... o sistema em execução não permitirá remover processos em execução do disco ..." Acho que isso não é verdade - os arquivos que não podem ser excluídos no seu exemplo não são realmente 'arquivos' reais - eles fornecem acesso a dispositivos de bloco, módulos de kernel e outros sistemas internos. Executar uma operação de exclusão neles não faz sentido e não pode ser feito mesmo como root.
21411 Nathan Osman
Aqui estão as fotos por Abhisek compartilhada no galery on-line: min.us/mSQcqHGQA min.us/moyPvnYOw (por solicitação da TheLQ)
Artem Pelenitsyn