Linux FUN: Was ich niemals auf der Shell eingeben sollte
Gestern hatte ich das Vergnügen einen kurzen Linux-Übersichtskurs halten zu dürfen. Ganz am Schluss des Kurses war noch etwas Zeit und es kam die Frage auf welche Befehle der root User niemals auf der Shell eingeben sollte wenn er das System nicht zerstören oder crashen lassen möchte.
Also sprich Befehle die ich auf produktiven Maschinen nie eingeben sollte!
Wir sind hier auf ein paar Möglichkeiten die mehr oder weniger gut funktioniert haben:
dd if=/dev/urandom of=/dev/sda
(/dev/urandom kann man auch gerne gegen /dev/zero austauschen 😉 )
Wir überschreiben unsere erste Festplatte mit Zufallszahlen (oder eben mit Nullen). Das kann man natürlich auch beliebig erweitern um z.b. nur den MBR zu überschreiben was wiederrum Probleme beim „normalen“ booten erzeugt:
dd if=/dev/zero of=/dev/sda bs=512 count=1
find / -iname *bin* -type d -exec rm -rf {} \;
Löscht alle Ordner mit Executables.
rm -rf /
Eigentlich zu einfach, fast schon langeweilig. Wird aber bei manchen Distributionen abgefangen.
cp /dev/zero /dev/mem
Wir überschreiben das Memorydevice mit Null?! *G*
Mein Persönlicher Favorit ist die Forkbombe die auch in diversen anderen Blogs kursiert:
Auch wenn er nur sehr einfach aussieht. Der Befehl hat seine Wirkung 😀
Habt ihr noch ausgefallene Möglichkeiten um ein Linuxsystem zu zerschießen? Natürlich völlig useless 🙂
7 Comments
Was bedeutet diese „forkbombe“ im Klartext? (reine Neugier)
Wir haben es ausprobiert. Das System friert nach Eingabe des Befehls sofort ein, kann aber wieder gestartet werden.
Es werden so viele Forks der eigenen Bash Shell erstellt bis das Memory aufgebraucht ist. Parallel beendet der Linux Kernel laufenden Prozesse um Memory zurück zu gewinnen. Allerdings läuft die Forkbombe ja immernoch und allokiert mehr und mehr Memory.
Bis zum Stillstand des Systems…
Danke für die hilfreiche Antwort zur Forkbombe. Die Frage hatte ich mir auch gestellt 😉
Du könntest auch einfach deine Mausbewegungen auf die Festplatte schreiben:
dd if=/dev/input/mouse0 of=/dev/sda
*GRINS* seeeeehr gut!
Was könnte man den alles als Input für:
dd if=/dev/**** of=/dev/sda
nutzen?
Da müssten ja alle möglichen System Ereignisse oder Quellen möglich sein.
Sagen wir mal ich würde ein Video so auf die Platte schreiben könnte ich darauf auch wieder zugreifen?
also etwa so?
dd if=/dev/sda of=/home/user/Videos/meinvideo.mpeg
Als InputFile für dd kann man eigentlich alles nutzen. Angefangen von Device Files über alle blockbasierenden Geräte usw. sendet. Dann weiss man auch wie weit dd fortgeschritten ist)
Bei deinem Beispiel würde dein erstes Festplattendevice /dev/sda blockweise ausgelesen und in eine Datei /home/user/Videos/meinvideo.mpeg ausgelesen. Sprich du würdest ein Backup deiner eigenen Festplatte machen.
Falls /home/user/Videos allerdings auf deiner lokalen Festplatte liegt würde diese ja bevor das Backup fertig ist volllaufen.
Wenn du allerdings z.b. eine CDROM, einen USB Stick oder eine andere Festplatte welche kleiner ist als dein Device unterhalb von /home/user/* benutzt um daraus aus zu lesen kannst du das Resultat anschließend mounten und auf die Dateien zugreifen.
Beispiel:
* Man lege eine CDROM in sein Laufwerk, anschließend erstellt man ein Abbild dieses CDROM mit hilfe folgenden Befehls:
dd if=/dev/cdrom of=/daten/ISO/cdromxyz.iso
* Auf den Festplattenplatz achten. (Während der dd läuft kann man übrigens eine Statusinformation von dd abrufen indem man ein „kill -10
* Anschließend Mountpoint erstellen: mkdr /mnt/meineCD
* Und mounten des Iso: mount -o ro,loop /daten/ISO/cdromxyz.iso /mnt/meineCD
Gruß
Thorsten