Hlavní navigace

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

21. 4. 2011 7:18 (aktualizováno) Petr Macek

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.

Sdílet

Diskuse byla uzavřena.