Explication d’une ligne Shell desctructrice

Une curiosité très efficace dans le plantage de systèmes… J’ai découvert ça il y a quelques jours, venant d’un de mes étudiants (ça fait plaisir ;o) ). il s’agit d’une petite ligne de commande shell particulièrement meurtrière et donc à ne surtout pas utiliser car elle plante immédiatement les systèmes sans ulimit… Et quand je dis immédiatement, c’est immédiatement : pas même le temps de bouger la souris pour fermer le terminal ou de taper un CTRL+C ni même le temps pour le système de tracer l’emploi de la commande.
Cette ligne a en plus la bonne idée d’être particulièrement esthétique…. bref j’adore ! Voici donc la bête :
:(){ : |:& };:
Joli non !!
Voyons un peu plus ce qu’il se passe derrière ces caractères: :() { … } correspond à la création d’une fonction. : | : & correspond à l’appel récursif de la-dite fonction en lançant 2 processus supplémentaires en tâche de fond. Enfin les derniers ; : sont l’appel de la fonction précédemment définie.
Que se passe-t-il alors ? des milliers de processus shell sont lancés sur le système jusqu’à ce que mort s’en suive…
La parade ? Il suffit de limiter le nombre de processus max d’un utilisateur une centaine pour éviter que le scheduler soit saturé et que le système plante.

Cette commande ne doit surtout jamais être utilisée sur une machine autre que votre machine personnelle … et c’est à vos risques et périls !

This entry was posted in Systems. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.