
Algumas pessoas que me conhecem sabem que eu costumo brincar fazendo analogias ao comando rm -rf /, pois bem! Recentemente foi adicionado um patch ao pacote coreutils que por sua vez foi adotado por algumas distribuições Linux, entre elas o pessoal do Debian aderiu este patch na sua versão unstable assim como percebi também que no Ubuntu 8.10 já possui tal modificação no coreutils. Que por sua vez desabilita a possibilidade de você acidentalmente ou não execute um rm -rf /, veja exemplo abaixo.
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0 (lenny)
Release: 5.0
Codename: lenny
# rm -rf /
rm: cannot remove root directory ‘/’
#
Pois se caso você queira realmente desestressar e mostrar que você e quem manda na sua máquina, não tem problema! basta adicionar a opção –no-preserve-root e dai você terá a liberdade de expressar seus sentimentos de fúria ou autoridade sobre o seu Linux! Mesmo assim fiquei ainda curioso e fui ver no código fonte sobre a veracidade deste feito, abaixo seguem os trechos para caso você queira também dar uma olhada tanto no funcionamento do comando rm como também tal “cuidado” adicionado recentemente.
1) Baixando o fonte via apt-get
$ lsb_release -c -r
Release: 8.10
Codename: intrepid
$
$ sudo apt-get source coreutils
$ cd coreutils-6.10/
$ sudo tar -xzf coreutils-6.10.tar.gz
$ find $PWD -iname “rm.c”
/tmp/coreutils-6.10/src/rm.c
$
2) Verificando tais trechos mais interessantes.
//$ cat -n coreutils-6.10/src/rm.c | sed '227,233!d' 227 int 228 main (int argc, char **argv) 229 { 230 bool preserve_root = true; 231 struct rm_options x; 232 bool prompt_once = false; 233 int c; // $ cat -n coreutils-6.10/src/rm.c | sed '348,355!d' 348 if (x.recursive & preserve_root) 349 { 350 static struct dev_ino dev_ino_buf; 351 x.root_dev_ino = get_root_dev_ino (&dev_ino_buf); 352 if (x.root_dev_ino == NULL) 353 error (EXIT_FAILURE, errno, _("failed to get attributes of %s"), 354 quote ("/")); 355 } // $
3) Conforme trecho do próprio man do comando rm, a opção vem habilitada por padrão para evitar tais “imprevistos”!
$ cat -n <(man rm) | sed ‘45,51!d’
45
46 –no-preserve-root
47 do not treat ‘/’ specially
48
49 –preserve-root
50 do not remove ‘/’ (default)
51
$
Então concluímos que não e bem o fim do famoso “rm -rf /”, agora e preciso adicionar o parâmetro “–no-preserve-root” para que você consiga mostrar quem e que manda! e durante pesquisas descobri que tal cuidado já havia sido adotado pela Sun no Solaris conforme este link.
OBS: Eu não me responsabilizo por nada que você venha a testar ou fazer relacionado a leitura deste POST, seja cuidadoso!
.:: Jorge Pereira ::.






on Jan 18th, 2009 at 23:48
leva teu laptop la pra o trabalho que eu quero fazer um teste passando no-preserve-root pra ver no que dá =D
sei que é esse comando que vc tá colocando no crontab agora viu =)
[]s
fafg
on Jan 19th, 2009 at 11:32
vc eh corajoso e testou isso na sua maquina ou foi direto pro fonte?
on Jan 19th, 2009 at 12:27
Nada!
Fui ver no código fonte e mandei ver em uma vm que uso só para testes!
[]s
on Jan 19th, 2009 at 20:23
Já não era sem tempo, tardou mas não falhou
Jorge, agora assim.. não deixe de fazer suas “analogias” como você mesmo disse, por conta disto não. Faça feito eu, nem mesmo fora do IRC, ou das rodas de bate-papo com os amigos, eu deixo de dizer: BORA VUGO!!!!!!!!!!!!!!!!!!!!!!
(só quem é da turma sabe oq eu to falando)
OBS: este meu post não foi e não é inútil, é apenas pra descontrair.
on Jan 19th, 2009 at 20:29
Gabriel,
Tu continua maluco como sempre cara!
Abraços!
on Mar 1st, 2009 at 21:05
Jorge,
avisa a Beto que agora ele pode usar Linux sossegado sem precisar fazer backup diário
on Mar 2nd, 2009 at 02:56
Outra opção em vez de montar um vm e rodar diretamente e (muito) rapido depois botar Ctrl-C. No tempo que roda, não deve tocar arquivos super importantes, deixando a maquina inútil. Só pra ver se mostra “cannot remove root directory” ou não. Mas tem que ser rápido, viu?
on Mar 2nd, 2009 at 10:46
Aline,
So se for na “velocidade da luz” e de qualquer forma não e uma brincadeira ou teste nada saudável!
[]s