Comment faire planter un ordinateur sous linux

ATTENTION: cette commande est donnée uniquement à titre d'information. Je décline toute responsabilité quand à son usage. Je rappelle que vous êtes responsables de vos actes pénalement et civilement, et que vous n'êtes absolument pas anonymes sur un ordinateur.

ATTENTION: N'EXECUTEZ CETTE COMMANDE QUE SUR VOTRE ORDINATEUR PERSONNEL!

On dit souvent qu'il est impossible de faire planter un ordinateur linux. C'est à la fois vrai et faux. Disons qu'il est difficile de le faire si l'administrateur a fait les choses correctement.

Cet article a pour but de vous prouvez la nécessité de gérer les choses correctement.

Cette commande est ce que l'on appelle un forkbomb. Le syscall fork() est appelé lorsqu'un processus fait un “enfant” afin de pouvoir faire plusieurs choses en même temps (il existe une autre solution, les threads, mais je ne vais pas entrer dans ces informations techniques).

Un forkbomb est une commande qui abuse de cette possibilité pour démarrer des millier/millons de processus, ce qui va en faire plus que ce que peut supporter la machine, et donc elle sera totalement non réactive/plantée.

Nous allons donc faire une commande qui:

  • Créer une commande (nommée : (deux-points))
  • Cette commande va s'appeler elle-même (récursive), et envoyer sa sortie en pipe sur un autre appel de la commande (on a donc une double récursion) (:|:)
  • Cet appel sera placé en arrière plan (&)
  • On va appeler cette fonction (c'est là qu'on casse tout)

Voici donc le code (qui doit être exécuté dans un shell bash):

:(){ :|:& };:

Il y a un remède pour ceci: la commande ulimit, qui permet de limiter le nombre de processus par utilisateur.

Si vous êtes intéressés, je vous recommande, comme d'habitude, de consulter les pages de man (cette fois-ci, c'est propre à bash. Taper man bash , puis /ulimit<enter>, puis n pour aller à l'occurence suivante)

users/fasnacht/astuces_linux/forkbomb.txt · Dernière modification: 2012/04/19 12:24 (modification externe)
Layout graphics