Que retenir de "Bourne Into Oblivion" ?

#rm -rf /On m’a fait lire hier un article, « Bourne Into Oblivion« , dans lequel l’auteur explique comment ce qu’il nomme une bombe à retardement a eu des conséquences gravissimes pour le système informatique d’une société. En résumé, un script d’administration faisait le ménage après avoir terminé sa tâche grâce à un rm -rf $var1/$var2. Mais ce script s’est vu exécuté avec $var1 et $var2 non définis, et s’est donc terminé avec un rm -rf /, en root, sur un NFS (pour les non unixiens, cela signifie effacer l’intégralité des systèmes de fichiers du réseau, avec le droit de le faire). Autant dire que c’est une catastrophe sans nom pour la société, surtout lorsque l’on ajoute que c’est à ce moment que les backups se révèlent être inutilisables.

Cette histoire qui ferait froid dans le dos à tout administrateur système m’a plongé dans une réflexion, que voici, sur la liste finalement assez importante d’erreurs ayant conduit à cet accident. Le but n’est pas de critiquer, mais de voir ce qu’il est possible d’apprendre de tout cela.

Tout d’abord, il est clair que ce script était exécuté avec des privilèges bien trop importants. Il n’y a que peu de choses qui puissent justifier qu’un script doive être lancé en tant que root. Il aurait dû être lancé en tant que simple utilisateur sans privilège, éventuellement avec un compte créé spécialement dans ce but. Les opérations nécessitant réellement des droits de super utilisateur auraient dû être isolées et appelées avec un sudo ou encore disposer d’un bit suid. Pour le reste, et notamment tout ce qui s’apparente à de la lecture, des droits correctement affectés avec des groupes auraient dû suffire. D’une façon générale lancer un script en root n’est absolument pas anodin, et au delà du problème rencontré ici, se pose celui de la possibilité d’une faille de sécurité.

L’article mentionne de plus le fait d’avoir lancé un script pour le week-end, autrement dit pour une durée d’exécution a priori relativement longue. Si le fait de laisser une tâche d’administration sans surveillance est courant, le fait que ce soit en tant que root change la donne et vient aggraver, s’il était besoin, le point précédent.

La justification de l’exécution en tant que super utilisateur mise de côté, ce bout de script n’était manifestement pas assez défensif étant donné ce contexte particulièrement dangereux. Son auteur n’aurait jamais dû laisser un tel appel se faire sans un test des deux variables. Cela dit le script n’était peut-être pas prévu à l’origine pour être lancé en tant que root, ce qui amène donc à considérer comme règle qu’un code faisant ce type de manipulation doit être défensif quoi qu’il arrive, dans la mesure où l’on ne sait pas dans quelles conditions il peut-être amené à être utilisé par la suite.

On peut de plus remarquer que le fait d’utiliser un répertoire à la racine est déjà discutable. Si cette remarque peut sembler être un pinaillage purement cosmétique, on s’aperçoit que si en pratique les répertoires utilisés avaient été /tmp/$var1/$var2 ou encore /usr/src/$var1/$var2 par exemple, un tel drame ne serait pas survenu.

Pour finir sur l’aspect purement administration, ce script aurait dû être documenté. D’après l’article, l’absence de définition des variables est la conséquence du fait que l’opérateur ne savait pas qu’il y avait des opérations à effectuer au préalable. Ce point aurait donc dû être documenté. Cependant l’expérience montre que documenter n’évite pas les accident, et reste donc insuffisant (d’ailleurs le script était peut-être même déjà documenté) : j’ai l’exemple d’un script qui servait à envoyer un mail informatif à une base d’utilisateurs, et qui portait le nom pour le moins clair de spam.sh. Il avait pourtant fallu commenter la commande essentielle du script depuis que quelqu’un l’avait lancé par erreur, n’ayant apparemment pas considéré son nom comme un avertissement suffisamment clair sur l’effet du script. Un autre exemple amusant est le message d’avertissement du système Debian en cas de apt-get jugé un peu trop violent : il demande alors de taper en toutes lettres « Oui, faites ce que je vous dis ! ». Quoi qu’il en soit, il faut d’une façon ou d’une autre, mais par un moyen technique, mettre une commande dangereuse hors de portée de toute personne qui n’est pas parfaitement renseignée.

Accessoirement, Joel Spolsky explique au deuxième point de son célèbre article, « The Joel Test« , que d’après lui l’opération de compilation et livraison d’un projet doit pouvoir être faite en une seule action, car toute étape supplémentaire entraîne la possibilité d’une erreur. L’erreur dont il est question ici et les conséquences qu’elle a eu montrent que finalement, la règle peut être étendue à toute opération d’administration.

D’autres erreurs, de nature plus humaine, sont également à l’origine de cet accident. Comme le souligne l’auteur de l’article, le passage de compétences ne s’est pas fait correctement par exemple, et la gravité de la tâche d’administration a été négligée en étant affectée à un novice. Je ne m’étendrai pas plus sur ce sujet, qui n’est plus celui de ma réflexion.

Aussi pour conclure, on se rend compte que cet incident, qui est extrêmement grave pour une société puisqu’il peut lui être fatal si les données ne sont pas récupérées, aurait pu être évité par de simples précautions. Pour la plupart d’entre elles, une seule de ces précautions aurait suffit à éviter cela. Mais peut-être que parce que ces précautions semblent dérisoires, elles sont négligées. Paradoxalement elles semblent tellement évidentes que les rappeler peut également paraître dérisoire.

Voilà en substance la réflexion que m’inspire cette histoire. N’ayant pas la prétention d’avoir plus de quelques notions d’administration système, je suis peut-être passé à côté de points importants. Si vous en voyez, n’hésitez pas à en faire part en commentaires.

Pourquoi je n'ai jamais passé le TOEIC

Par choix, je n’ai jamais passé le TOEIC (comprendre par là : s’inscrire à l’épreuve), ni le TOEFL d’ailleurs, alors même que je suis convaincu que je ferais un score très correct. Je n’irai pas jusqu’à déconseiller de le passer, car ce serait prendre le risque de mal guider quelqu’un sur la valeur d’un diplôme, mais j’assume en tout cas mon choix et je suis jusqu’ici persuadé que c’était le bon.

Il y a plusieurs raisons à cette décision. Tout d’abord s’inscrire à cette épreuve est payant, et lorsque l’on est étudiant, on réfléchit à deux fois avant de débourser plus de 70€ pour un examen. Aussi cette raison suffit à se poser la question en premier lieu. Certaines formations l’imposent (ce qui est à mon avis une erreur, ou en tout cas une solution de facilité, mais ce n’est pas l’objet de ce billet), d’autres non. Et pour ces dernières, chacun a donc le choix de passer ou de ne pas passer cette épreuve.

TOEIC - Certificate of Achievement
Ce test a pour objet de valider un certain niveau de connaissances en anglais, en vue d’une certification de celui-ci à l’attention du monde professionnel. Autrement dit, le but est de pouvoir l’exhiber fièrement sur un CV (à condition de ne pas préciser le score lorsqu’il est médiocre ; c’est du vécu). Le TOEIC n’est donc qu’une case cochée en face de « niveau en anglais », à l’image des cases que l’on coche durant l’épreuve, mais cochée de façon certifiée (tandis que le reste peut bien entendu rester un tissu de mensonges ou une évaluation fantaisiste de son propre niveau). Cependant le CV n’est pas sensé être un détail exhaustif de tout ce que l’on sait faire, mais plutôt une présentation d’un ensemble de compétences que l’on souhaite montrer pour accéder à un certain poste ou type de poste. Mentionner pompeusement un résultat d’examen à une telle épreuve suppose donc que l’on compte bien utiliser cette compétence, que ce soit en travaillant à l’étranger, ou en contact avec des personnes avec qui l’anglais sera la langue par défaut. S’il s’agit simplement de faire savoir que l’on sait parler anglais, le mentionner suffit largement et il n’est nul besoin de tamponner d’un sceau.

Et c’est à partir d’ici que le bât blesse. Je pense avoir déjà éliminé une part importante des personnes passant malgré tout le TOEIC avec la seule question : « comptez-vous vraiment accéder à un poste où l’anglais est décisif ? » Mais même pour la part restante, deux faits très simples en balaient encore la majorité à mon avis. Tout d’abord le CV lui-même : si vous postulez pour une société anglophone, ou pour une société étrangère dans laquelle vous aurez à communiquer essentiellement en anglais, vous devrez naturellement fournir un résumé (pour reprendre le terme) en anglais. Et autant dire qu’un CV rédigé en anglais est autrement plus instructif qu’un score au TOEIC. Car ce dernier ne laisse certainement pas voir des détails aussi subtils que le style, le choix des mots, et la culture d’un candidat en matière de milieu professionnel. Un CV au contraire en donne un bon aperçu malgré sa nature : un natif verra en un coup d’œil s’il a affaire à quelqu’un qui maîtrise mal la langue, la maîtrise basiquement, ou la manie avec aisance ; et sa construction est révélatrice de la connaissance des règles dans la langue ou le pays. La lettre de motivation est encore plus discriminante, puisqu’il s’agit d’un exercice de rédaction, et de relativement haut niveau qui plus est (à ce sujet je vous recommande un article pertinent sur le blog 37 Signals).

Ayant lu ce paragraphe, vous pensez naturellement : « Oui, mais un CV et une lettre, on peut les faire rédiger, ou au moins relire. » C’est vrai (la relecture par un tiers est même indispensable), mais je pense néanmoins que la maîtrise de la langue va transparaître dans la majorité des cas. Cependant j’ai parlé de deux faits, et le deuxième est l’entretien, en personne ou par téléphone. Et là c’est sans appel : en une ou deux phrases tout au plus, un natif aura déjà une très bonne idée de votre niveau, et au bout d’un quart d’heure, sachant qu’un entretien dure raisonnablement une heure, il en aura une idée incomparablement plus précise que ce que pourra indiquer n’importe quel test à base de questions à choix multiple.

Voilà pourquoi je n’ai jamais passé le TOEIC : je suis convaincu qu’il ne me servira absolument à rien. Je ne serais peut-être pas aussi catégorique pour ce qui est des postes de traducteur, encore que lorsque l’on vise un poste dont la compétence essentielle est la langue, on justifie a priori un diplôme correspondant, et l’on est donc déjà crédible sans avoir besoin de passer un tel test. Maintenant, aux étudiants qui liront ceci, c’est à vous de faire votre choix : il ne s’agit ici que de mon avis.

Quel futur en imagerie numérique – Un spectre affichable plus large

Depuis l’apparition des premiers affichages couleurs et jusqu’à aujourd’hui, les écrans reposent sur la nature de l’œil humain, et représentent les couleurs dans l’espace RVB (rouge, vert, bleu). L’objet de ce billet est de s’interroger sur la validité de ce choix, et de manifester une certaine impatience envers une nouvelle technologie en la matière.

Sans aller plus loin que quelques considérations superficielles, rappelons que la rétine, le capteur au fond de l’œil, est composée de bâtonnets, qui sont sensibles à la luminosité, et de trois types de cônes, respectivement sensibles à trois plages de fréquences grossièrement centrées sur le rouge, le vert et le bleu. C’est la raison pour laquelle les affichages utilisent les couleurs rouge, vert et bleu : c’est la synthèse additive.

Planche n°19 du test du Docteur Shinobu Ishihara
Pourtant tout le monde n’est pas nécessairement sensible à ces trois couleurs. L’exemple le plus commun est le daltonisme : certaines personnes n’ont que deux, voire un seul type de cône, ce qui explique le fait qu’elles sont incapables de distinguer certaines couleurs. La forme la plus commune de daltonisme (la deutéranopie : l’absence de cône sensible au vert) est ainsi de percevoir indistinctement le rouge et le vert.

Mais alors, inversement, les personnes non daltoniennes ne sont-elles pas finalement daltoniennes dans une certaines mesures elles aussi ? N’y a-t-il pas des couleurs que mêmes les gens avec une vision considérée comme normale ne peuvent distinguer ? Je n’entends pas par là notre capacité à ne percevoir que le spectre dit visible, où à nécessiter un minimum d’écart entre deux teintes pour pouvoir les différencier. Mais par exemple, lorsqu’un écran affiche du vert et du rouge simultanément, on perçoit du jaune. Mais est-ce du jaune pour autant ? Non. Pour s’en convaincre, testons : observons son spectre lumineux. Pour cela, voici donc l’image présentée dans le précédent billet, représentant différentes franges de couleurs.

Franges de couleur

Le but est donc de constater la contribution de chaque frange dans les différentes fréquences du spectre visible, qui rappelons-le ressemble à ceci.

Spectre de la lumière visible

Notez comme toutes les couleurs des franges sont présentes dans ce spectre. Idéalement, une frange devrait donc avoir une forte intensité à la fréquence correspondant à sa couleur, indépendamment d’une éventuelle intensité sur d’autres fréquences.

Avec l’aide d’un CD, ou de tout autre objet capable de diffracter la lumière, observons donc le spectre des différentes raies. Les photos qui suivent présentent plusieurs problèmes, qu’il convient de prendre en compte. L’écran de test tout d’abord est un cathodique (je referai peut-être un test avec un LCD si l’occasion se présente), dont le calibrage est probablement discutable. La balance des blancs de la prise de vue n’est quant à elle pas terrible, d’où un jaune qui semble tirer sur le vert. Enfin il faut remarquer que les franges ont une certaine largeur (il fallait pouvoir les photographier), ce qui entraîne un spectre moins précis (les décompositions sur la largeur d’une frange se chevauchent un peu). Ces remarques préalables étant faites, voici le résultat.

Frange blanche

Frange rouge

Frange jaune

Frange verte

Frange cyan

Frange bleue

Frange magenta

Prenons le cas de la frange jaune : l’écran est sensé afficher une raie de jaune. Pourtant sur le spectre on observe du vert et du rouge, et un peu de bleu (dû à la luminosité de l’écran, qui a tendance à blanchir les couleurs), mais en tout cas pas de jaune. Ce n’est pas du jaune. c’est seulement une couleur que l’on perçoit comme jaune. Enfonçons bien le clou : un écran ne peut pas afficher de jaune, pas plus qu’il ne peut afficher du cyan, du magenta, ou du blanc (le spectre devrait alors ressembler à celui indiqué plus haut). Cependant si l’on mettait du véritable jaune à côté on ne verrait pas la différence, car faute d’être sensible à cette couleur nos yeux réagissent de la même façon à ces deux couleurs.

Du moins, la majorité des gens ne verraient pas la différence. Car il existe également le contraire du daltonisme : des personnes ne possédant pas trois, mais quatre types de cônes différents (des quadrichromates ; il existerait mêmes des pentachromates), le quatrième étant sensible au jaune justement. Les personnes dans ce cas doivent donc percevoir la différence entre du jaune et un mélange de vert et de rouge aussi nettement que je perçois la différence entre du vert et du rouge. N’en connaissant pas personnellement (et je serais très intéressé par le témoignage de quelqu’un ayant cette expérience), je n’ai pas de témoignage le confirmant, mais j’ai la conviction que pour elles les écrans doivent sembler bien peu fidèles…

Notez d’ailleurs que même pour les personnes ayant une vue classique à trois types de cônes, la synthèse additive ne constitue pas une approximation suffisante. En effet, il existe des couleurs que la plupart des gens savent distinguer et que les écrans sont parfaitement incapables d’afficher. Vous n’êtes pas convaincu ? Vous voulez un exemple ? Essayez d’afficher du orange fluo pour voir.

Alors ma question est : quand aura-t-on des affichages qui ne soient plus basés sur cette astuce médiocre de la synthèse additive, mais qui soient véritablement capables d’émettre n’importe quelles fréquences (notez le pluriel) du spectre visible ? Dans un premier temps, l’amélioration peut passer par l’utilisation d’un plus grand nombre de couleurs primaires (voir ma note ci-après). Mais au delà, on peut imaginer la mise au point d’un matériau dont les caractéristiques chromatiques pourraient être contrôlées par excitation par un courant. On pourrait alors envoyer des signaux correspondant au spectre souhaité et obtenir la couleur correspondante, de la même façon qu’en envoyant à un haut-parleur un signal, on obtient un son ayant pour spectre le spectre de ce signal (avec plus ou moins de fidélité bien sûr).

La publication de ce billet a été pas mal retardée par la démonstration du spectre de l’écran, que je n’avais ni le temps ni l’occasion de réaliser (d’ailleurs un grand merci Boris pour le coup de main lors de la séance photo). Or entre temps j’apprenais par le site Akihabara News que Sharp travaille sur la construction d’un écran LCD avec cinq couleurs primaires. Cela me conforte donc dans la conviction que l’amélioration radicale du spectre des écrans est l’une des évolutions proches de l’imagerie numérique.

Beam

Article « Rouge vert bleu » sur Wikipédia

Cours « La vision des couleurs »

Article « Daltonisme » sur Wikipédia