Retrouvez cet article dans : Linux Pratique Hors série 8
Fork est un terme anglais qui signifie littéralement « fourchette ». Quel rapport avec l'informatique ? Eh bien, c'est en fait la connotation d'embranchement (une même racine pour plusieurs branches) qui nous intéresse ici. Un fork désigne donc un projet informatique qui possède une racine commune avec un autre projet. Ces deux projets peuvent suivre cependant des voies de développement tout à fait différentes. On peut aussi parler de « projet dérivé ».
Comme vous pouvez le deviner, pour qu'un fork voit le jour, il est nécessaire que les auteurs du projet initial aient mis leurs sources à disposition et autorisé la modification, l'utilisation et la redistribution de ce code source. C'est pourquoi on entend souvent parler de fork dans le monde des Logiciels libres. Malheureusement, l'apparition d'un fork entraîne souvent la mort du projet initial, peut-être moins abouti ou dont l'équipe de développement est moins active. Seuls les projets les plus performants et les plus « séduisants » aux yeux des utilisateurs survivent. Ainsi, les forks permettent en quelque sorte une sélection naturelle parmi la profusion de Logiciels libres...
L'un des forks les plus connus est sans doute le serveur graphique X.Org, qui est basé sur la version 4.4 RC2 d'XFree86. Et aujourd'hui, la plupart des distributions intègrent X.Org au lieu d'XFree86... On peut également citer le célèbre logiciel de dessin vectoriel Inkscape, qui, a l'origine, est un fork de Sodipodi.
Dans un système UNIX, fork désigne également une fonction permettant à un processus de se dupliquer, en parallèle au premier. Le processus initial est ensuite désigné en tant que processus-père, la duplication est un processus-fils. Ce dernier hérite de tous les attributs système du père. La fonction fork est par exemple très utilisée dans les applications client-serveur avec plusieurs clients simultanés.
Cette fonction peut d'ailleurs être à l'origine de bien des problèmes, puisqu'elle entre dans la composition de ce que l'on appelle une « fork bomb » (aussi connu sous le nom de « logic bomb »). Une fork bomb est une forme d'attaque sur votre système : il s'agit d'un programme qui s'auto-réplique en créant un grand nombre de processus très rapidement jusqu'à saturation de l'espace disponible, ce qui entraîne la plantage de votre système d'exploitation (quel qu'il soit). Aucun nouveau programme ne peut démarrer, les programmes actifs ne peuvent plus être utilisés (car le processeur et la mémoire sont saturés).
La seule solution permettant de venir à bout d'une fork bomb étant de détruire toutes ses instances, une fois la fork bomb activée, vous n'avez plus qu'à redémarrer votre système ! Cela dit, le nombre maximal de processus pouvant être exécutés par un programme ou un utilisateur est le plus souvent limité (via le fichier /etc/security/limits.conf par exemple). Ce qui réduit considérablement l'impact d'une telle attaque...
Retrouvez cet article dans : Linux Pratique Hors série 8

