W mgnieniu oka

Witaj na prywatnej stronie blinkkina. Zapoznaj się z informacjami na temat bloga i autora. Subskrybuj witrynę przez kanał atom lub zobacz ostatnie komentarze. W wolnej chwili odwiedź mojego mikrobloga na identi.ca.


Uniksowa legenda miejska

· skróty · skomentuj

Legendy miejskie (urban legends) są wciąż żywe i prawdopodobnie każdy z jakąś się spotkał. Czy to dotyczyło “czarnej wołgi” czy też czegoś innego… Okazuje się, że od kilku lat powtarzany jest pewien mit dotyczący systemów unikso-podobnych. Wielokrotnie widziałem jak początkujących użytkowników, straszy się następującą komendą:

rm -rf /

Problem w tym, że w większości przypadków takie polecenie po prostu nie zadziała, jest to zwyczajny hoax. Większość dystrybucji Linuksa korzysta z narzędzi GNU Coreutils, a te od kilku lat posiadają wyjątek na komendy chown/chmod/rm itp. wydane rekursywnie na /.

Oznacza to, że wspomniane polecenie zwróci po prostu błąd i wbrew zapewnieniom rzeszy osób, nie stanie się nic strasznego. Zabezpieczenie te powstało w celu zapobiegnięciu sytuacji, kiedy niechcący wkradnie nam się spacja do polecenia (podczas np. bardzo wolnego połączenia zdalnego przez ssh) – przykład:

rm -rf / home/nazwa_uzytkownika/

Jak więc można usunąć rekursywnie, dosłownie wszystko? Powstał w tym celu specjalny przełącznik:

rm -rf --no-preserve-root /

Tak, więc oprócz uprawnień super użytkownika i bycia zwyczajnym idiotą, potrzeba jeszcze magicznej opcji, żeby wyrządzić rzeczywiste szkody. Co więcej według mojej wiedzy, podobne zabezpieczenia posiadają narzędzia z Solarisa i FreeBSD. Cytując fragment ze strony podręcznika FreeBSD:

It is an error to attempt to remove the files /, . or …

Jedyne znane mi narzędzia, które pozwalają na rekursywne usunięcie /, pochodzą z systemu NetBSD, zapewne także OpenBSD i popularnego w zastosowaniach wbudowanych BusyBox. Dwie pierwsze pozycje to systemy, których deweloperzy uważają, że użytkownicy powinni wiedzieć, co robią. Osobna sprawa, że są one dość niszowe, więc nie cieszą się dużą populanością.

A co z BusyBox? Na urządzeniach wbudowanych jak smartfony itd. dostęp do uprawnień super użytkownika jest znacznie utrudniony – potrzebny jest zazwyczaj tzw. jailbreaking. Nawet to nie gwarantuje “sukcesu”, ponieważ nośnik na którym jest zapisany system (zazwyczaj pamięć flash NAND), zazwyczaj pozwala tylko na odczyt z wyjątkiem tzw. flaszowania.

Na koniec prośba do wszystkich: przestancie straszyć początkujących użytkowników poleceniem, które w rzeczywistości jest niczym innym jak legendą miejską.

Dragonfly BSD jest piękne

Sposób rozwiązania problemu z „chmod -x chmod” przy użyciu systemu plików HAMMER pod DragonFly BSD.