Commande « rm -rf » : un hébergeur supprime le contenu de plus de 1530 sites !

[et_pb_section fb_built="1" _builder_version="3.22" hover_enabled="0" sticky_enabled="0" min_height="1601px"][et_pb_row _builder_version="3.25" background_size="initial" background_position="top_left" background_repeat="repeat"][et_pb_column type="4_4" _builder_version="3.25" custom_padding="|||" custom_padding__hover="|||"][et_pb_text _builder_version="3.27.4" background_size="initial" background_position="top_left" background_repeat="repeat" custom_margin="-61px|||||" min_height="1438px"]C’est une histoire qui devrait servir de cas d’école : un responsable d’un hébergeur anglais a effacé le contenu de tous les sites de ses clients avec une simple commande « rm -rf ».  C’est The Independent qui rapporte l’information : un certain Marco Marsala, qui gère un hébergeur anglais avec approximativement 1535 clients, a effacé l’intégralité des contenus de ses serveurs avec la seule commande « rm -rf ». Contrairement à ce que l’on peut croire, on dénombre de nombreux incidents de ce type chaque jour même si tous les administrateurs connaissent bien cette fameuse commande.  Que s’est-il donc passé ? Le 10 avril, Marco Marsala poste un message sur Server Fault, un forum dédié aux développeurs. Il y explique avoir exécuté un script bash (« rm -rf {foo}/{bar} ») « à cause d’un bug » qui sévissait dans son code. C’est ainsi que « tous les serveurs ont été supprimés ainsi que les sauvegardes hors site parce que le stockage était lié au même script ». En un mot : catastrophe. Marco Marsala vient d’effacer les données des sites de tous ses clients. Le message de Marco Marsala sur le forum. 

Le « rm » de la mort

Les développeurs Linux connaissent bien cette commande qui est souvent nommée le « rm de la mort » ; et pour cause ! Concrètement, « rm » correspond à « remove », équivalent de « delete » sous MS-DOS. Le « r » de « -rf » indique quant à lui que l’ordre va se propager dans tout le répertoire courant. Enfin, le « f » veut dire « force », comme pour « forcer » la commande sans demander son reste ou des confirmations multiples.  Important : pour utiliser cette commande, il est nécessaire de travailler sur un compte « root », c’est-à-dire le compte administrateur avec tous les droits. L’inconvénient étant que l’on y travaille sans garde-fou. A ce propos, un proverbe dit qu’il y a deux types de gens qui travaillent sous root : ceux qui ont déjà fait une énorme bêtise, et ceux qui vont en faire une... En somme, travailler sous root revient à travailler sans filet.  Il existe toutefois des astuces. Les premières sont foncièrement du bon sens, à commencer par faire attention à une chose qu’il est malheureusement difficile de changer : sur un clavier, le « / » est placé juste à côté du « . ». Et sous Linux, le « . » correspond au répertoire courant… En tapant rapidement, il est donc très facile de se tromper et de lancer une commande qui n’est pas bonne. Par ailleurs, « lorsqu’on a lancé une telle commande par erreur, une astuce consiste à débrancher électriquement la machine si c’est possible. On perdra des fichiers mais ce sera déjà un moindre mal, nous explique le spécialiste Nat MakarevitchLa catastrophe naît donc du fait qu'on invoque "rm -rf /" au lieu de "rm -rf autrechose" et qu'on est sous compte root. Invoquer "rm -rf /" sous un compte autre que root ne détruit rien, le système répond "tu n'as pas le droit de détruire ces fichiers (vitaux pour le système)" », ajoute-t-il. 

Le problème est avant tout humain

Dans le post du forum de Marco Marsala, un autre élément est à prendre en compte : il précise qu’il utilise Ansible pour « automatiser certaines opérations sur l’intégralité des serveurs ». Ici le problème est tout autre, avant tout foncièrement humain. « Lorsqu’il y a trop de protections, ça ralentit forcément le travail », souligne encore Nat Makarevitch. Généralement, c’est dans un souci d’efficacité et de rapidité que les administrateurs tentent de s’affranchir des protections contre ce genre de problème.  Pourtant, là encore il existe des parades bien connues et notamment la commande « rm -i » ; « i » pour « interactive ». « En somme, c’est une option comme un garde-fou qui signale qu’on est peut-être en train de faire une bêtise », continue le développeur. De plus, il est également possible d’ajouter la commande « rm -i » de manière implicite. Cela va ajouter de la lourdeur au travail d’un administrateur système, ce pourquoi elle est souvent évitée… Dans le cas de Marco Marsala, elle lui aurait sauvé la mise car les données de ses clients ne pourront à coup sûr pas être récupérées, sauf peut-être en faisant appel à un spécialiste de la récupération de données. Une intervention sans réelle garantie.  « Votre business est fini. Vous n’avez pas besoin de conseils techniques, vous devez appeler votre avocat », écrit un membre du forum. Et il n’a peut-être pas tort… [/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]