La magie et la panique

Gazette Linux n°173 — Avril 2010

Luc Mioulet

Adaptation française  

appzer0

Relecture de la version française  

Article paru dans le n°173 de la Gazette Linux d'avril 2010.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Qu'est donc la touche « magique » SysRq
Doit on activer le SysRq ?
Comment utiliser la touche SysRq sur des PC x86 ?
Kernel Panic
Pour la sécurité bonne chance  !
À propos de l'auteur

Tout commença avec la touche SAK (Secure Attention Key), la touche d'attention sécurisée, qui était censée résoudre mes problèmes dans Ubuntu. La seule aide que je reçue fut un kernel panic.

Il y eût ensuite les enquêtes; et après les enquêtes, vinrent les doutes. J'écris mon rapport en commençant par un récapitulatif sur SysRq, provenant principalement de http://www.kernel.org/doc/documentation/sysrq.txt Ce document ne comporte pas d'information critique, mais cette lacune est compensée dans ce document.

Qu'est donc la touche « magique » SysRq

C'est une combinaison de touches à laquelle le kernel répondra immédiatement, quelle que soit son activité, à supposer qu'il ait été compilé avec l'option CONFIG_MAGIC_SYSRQ. C'est le cas dans la majorité des distributions GNU/LINUX.

Doit on activer le SysRq ?

Non, si l'on a un système compilé avec le SysRq, la touche est (généralement) activée. Cependant les distributions comme les OpenSuse ont une valeur restreinte dans /proc/sys/kernel/sysrq, ce qui veut dire que, d'après leur documentation, sysrq est désactivé par défaut. Mais on peut désactiver ou restreindre cette propriété de /proc/sys/kernel/sysrq. Par défaut ce fichier contient 1 et est pleinement activé (avec quelques exceptions; voir ci-dessus). Pour désactiver SysRq, écrivez 0 dans ce fichier.

Pour restreindre les fonctionnalités de manière sélective utilisez les valeurs de cette table :

Tableau 1. Fonctionnalités et valeurs associées

Valeur Option
2 permet le contrôle de l'enregistrement console
4 Activer le contrôle du clavier (par exemple SAK)
8 Activer l'image mémoire des processus pour le débogage
16 Activer la commande de synchronisation
32 Activer le remontage des partitions en lecture seule
64 Activer les signaux système (term,kill,oom-kill)
128 Autoriser le redémarrage/extinction
256 Autoriser le contrôle de la priorité des processus

Choisissez vos options, faites la somme de leur valeur et écrivez la somme dans /proc/sys/kernel/sysrq; après cela, seules vos options devraient être autorisées.

La valeur de /proc/sys/kernel/sysrq détermine les raccourcis disponibles à tous les utilisateurs et n'est pas soumise aux permissions. Toutefois, écrire dans ce fichier exige des droits d'administrateur. Et puisque le fichier n'est pas vraiment un fichier et disparaît après extinction de la machine ou redémarrage, l'écriture doit être répétée à chaque démarrage.

L'option sysrq_always_enabled dans la ligne d'options du noyau du gestionnaire de démarrage va permettre au noyau d'ignorer /proc/sys/kernel/sysrq

Comment utiliser la touche SysRq sur des PC x86 ?

Appuyez sur la combinaison de touches Alt+SysRq+Touche_Commande où SysRq est la même touche qu'Imp.Ecran et la Touche_Commande est une lettre insensible à la casse ou un chiffre compris dans la suite : b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,z,0-9

Inutile de dire qu'il est peu commode, voire infaisable d'appuyer sur les trois touches à la fois alors que deux d'entre elles sont diamétralement opposées. Faites simplement :

  • Maintenez appuyé sur Alt (gauche ou droite)

  • Appuyez puis relâchez SysRq rapidement,

  • Appuyez sur Touche_Commande rapidement,

  • Relâchez tout.

Rapidement veut dire : allez-y sans hésiter ou Ubuntu va faire apparaître une fenêtre pour confirmer la capture d'écran.

Note

la position des touches est celle d'un clavier américain (QWERTY). Gardez cela à l'esprit lorsque vous utilisez un clavier non-américain . Par exemple q est la touche à droite de Tab, même si elle s'appelle a sur un clavier français. En réalité vous n'envoyez pas un a ou un q : vous envoyez une séquence bien défini de code-touche au kernel. Les claviers qui n'appliquent pas le code-touche des claviers traditionnels n'ont pas leur place.

Voici les informations utiles, pour ce qui nous concerne, sur seulement quelques-unes des commandes :

Tableau 2. Commandes et effets

i Arrête tous les processus sauf init
k SAK arrête toutes les applications de la console virtuelle sur laquelle on se trouve
0-9 Définit le niveau d'enregistrement console, en gérant/et gère l'affichage des messages du kernel à l'écran : 0 pour n'avoir que les messages d'alertes, 9 pour tout afficher

Kernel Panic

Vous vous demandez la raison pour laquelle je déclenche systématiquement un kernel panic lorsque j'appuie sur le SAK sous Ubuntu 9.10, que ce soit en mode texte ou graphique?

La différence entre les deux est que le noyau panique immédiatement en mode texte. En mode graphique tout peut sembler bien aller, mais lorsqu'on fait par exemple Alt+Ctrl+F1 pour passer en mode console c'est le drame.

Ce défaut a déjà été répertorié pour une version précédente en février 2009: https://bugs.launchpad.net/Ubuntu/+source/linux/+bug/329576/

Un commentaire ajouté au rapport de bug dit qu'il se manifeste sur les cartes mère AMD, mais pas forcément sur des Intel. Je confirme que le kernel panic a bien lieu sur du matériel AMD, mais je l'ai aussi vu sur des cartes mère Intel avec un adaptateur graphique VIA.

Un défaut similaire a été décrit pour Debian en août 2009 : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543324/ mais ici le démon ConsoleKit était le coupable. Je l'ai donc désactivé, mais le problème persiste sur mon Ubuntu.

Si on change le niveau d'enregistrement avec Alt+SysRq+9, on ouvre la vanne des informations de bas niveau à un initié. Ce qui est clair, à la lecture et l'observation, c'est qu'une tentative d' arrêt du processus 'init' a lieu, ce qui n'est certainement pas l'intention du noyau. D'où vient cette tentative d'arrêt d'init ? Il s'agit de quelque chose de propre à Ubuntu puisqu'une OpenSuse ne le fait pas.

Maintenant lorsque je fais Alt+SysRq+i pour arrêter tous les processus excepté init, j'obtiens un kernel panic exactement comme avec un SAK, avec le même message concernant la tentative de meurtre sur init.

Ce bug d'Ubuntu daté de février 2009 n'a pas reçu de suite, il n'a même pas été dévolu à un développeur, ni même vu sa priorité modifiée. Que faut-il faire pour qu'un bogue important soit corrigé dans Ubuntu?

Pour la sécurité bonne chance  !

Au final, ce que nous avons appris est inquiétant :

  • Tout le monde veut SysRq parce que c'est magique, sinon les distributions majeures ne l'intégreraient pas à la compilation ;

  • Un administrateur peut réduire les fonctionnalités de SysRq, mais pas seulement pour la plèbe. Une quelconque réduction des fonctionnalités impactera automatiquement l'administrateur. Les fonctionnalités ne peuvent être changées à la volée, car quand une situation critique apparaît on en a déjà besoin ;

  • Même si on ne tient pas compte des bug comme celui du SAK d'Ubuntu, SysRq possède des options pour descendre et détruire le système. Si vous commencez à les désactiver, SysRq perd un peu de sa magie lorsqu'on l'appelle dans les situations de crise ! Donc si vous désirez en tant qu'administrateur posséder SysRq, vous ouvrez au vandales et bidouilleurs une belle possibilité de mettre le bazar.

Les systèmes GNU/Linux sont-ils les systèmes les moins sécurisés dans l'histoire des ordinateurs ? Pourquoi la magie de SysRq n'est-elle pas seulement réservée à l'administrateur ? [1]



[1] C'est une question à laquelle on peut répondre facilement, même si la réponse ne résoud en rien ce problème. Puisque la plupart des utilisateurs (espérons-le) ne sont pas la plupart du temps connectés en tant qu'administrateur, réserver la commande SysRq à l'administrateur seul rendrait cette commande totalement inaccessible au moment où l'on en aurait le plus besoin. Une approche réfléchie à ce problème serait de désactiver les options "dangereuses" par défaut, et de les réactiver sur les machines qui ont besoin d'une maintenance particulière ? --Ben

À propos de l'auteur

Anonymous A. N. Onymous écrit pour la Gazette Linux depuis ses premiers jours. Généralement il s'introduit la nuit et laisse divers articles sur le bureau de l'éditeur. Un homme (ou une femme) entouré par bien des mystères, ne réclamant aucun droit et se cachant dans l'ombre...ça a sans doute à voir avec un énorme trésor d'un temple Maya et une femme magnifique aux yeux sombres avec un tatouage de serpent enroulé depuis sa hanche gauche...Ou peut être préfère t'il simplement la tranquillité. Dans tous les cas nous lui sommes reconnaissant pour son travail.-- Éditeur, Linux Gazette

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.