Table of contents
reisubEn pressant les touches <alt> et <SysRq>, vous activez une option particulière du noyau appelée "Magic keys" qui vous permet de demander directement au noyau d'effectuer certaines opérations. Ici, chaque lettre de la séquence correspond à une de ces actions, qui sont à entrer scrupuleusement dans l'ordre annoncé :
1. r (pour Raw) : passe le clavier en mode "brut" 2. e (pour tErm) : envoie le signal SIGTERM à tous les processus en cours (sauf init) 3. i (pour kIll) : envoie le signal SIGKILL à tous les processus qui tourneraient encore malgré le précédent SIGTERM (sauf init) 4. s (pour Sync) : vide le cache des disques durs et force l'écriture des données 5. u (pour Umount) : démonte tous les systèmes de fichiers et les remonte en lecture seule pour éviter une vérification au prochain démarrage 6. b (pour reBoot) : reboote l'ordinateur ;)
init=/bin/sh...et bootez. Passé quelques secondes vous vous voyez offrir un prompt, mais avant de dégainer le passwd il faut remonter le système de fichiers en écriture (car dans les premières étapes du démarrage le FS est en lecture seule) :
# mount -o remount,rw / # passwd # ou modifiez à la main /etc/passwd (supprimez le "x" du deuxième champ de la ligne root) # sync # on force les écritures sur le disque sur # mount -o remount,ro / # reboot
# echo 3 >/proc/sys/vm/drop_caches
Pas de panique, malgré son absence sur le disque dur il est toujours possible d'accéder au contenu du fichier en question via l'identifiant du FD tenu par le processus lui-même : vous pouvez donc "écraser" ses données comme vous le feriez sur un fichier traditionnel. Pour récupérer l'identifiant du FD, repérez la référence dans la 5ème colonne ("FD") à l'aide de la commande lsof :
# lsof COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... python 13179 marc 3w REG 8,1 1443964 8135942 /tmp/blah (deleted) ...
Puis écrasez les données du fichier via sa représentation virtuelle dans /proc/<PID du processus>/fd/ :
# echo > /proc/13179/fd/3
La taille du fichier — bien que toujours ouvert —, est maintenant de 0 octets :
# lsof COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... python 13179 marc 3w REG 8,1 0 8135942 /tmp/blah (deleted) ...