Si comme moi vous arrivez devant votre machine linux (mon SAN en l’occurence qui n’a ni lecteur CD, ni disquette, juste des disques durs) et que vous avez beau essayer de vous logger avec l’utilisateur root, mais le mot de passe ne semble pas bon, vous n’avez pas le choix il faut aller chercher un tournevis et ouvrir la bête.
Explications de la méthode et du pourquoi de la chose. {{{Pourquoi « hacker » son propre PC ?}}}
Je vous le demande… c’est vrai que ça paraît étrange de vouloir changer le mot de passe de root, et de s’entendre dire qu’il faut démonter. Alors pourquoi faut il faire son hacker sur son propre PC ?

Imaginez la situation est la suivante : vous arrivez devant VOTRE PC sous linux, vous le lancez, vous vous connectez avec votre nom d’utilisateur habituel et puis vous décidez de faire une tâche d’administration, par exemple monter un disque, chose assez classique. Vous utilisez alors la commande « su » ou « sudo » selon votre habitude et là on vous demande le mot de passe de root, que bien évidemment vous n’arrivez pas à taper. Vous avez beau essayer tous les mots de passe possibles et imaginables, rien n’y fait, vous l’avez perdu. Eh oui ça arrive. Chez moi, pas plus tard qu’il y un mois.

Vous n’avez donc aucun moyen d’accéder au compte root, ce qui pose quand même pas mal de problèmes car c’est votre PC et vous n’avez pas spécialement envie de l’abandonner dans un coin pour un mot de passe.

{{{Y’a pas 36 solutions…}}}
… mais il y en a quand même quelques unes.
Les voici, de la moins bonne à la meilleure :
- Tenter toutes les combinaisons possibles (non, je me doute que personne y avait songé, je propose ça juste pour rire bien évidemment…)
- Retourner toute la maison à la recherche d’un bout de papier avec le mot de passe dessus (assez vain en général, sauf si vous ne faites pas le ménage et que vous n’avez pas peur qu’on vous pique votre mot de passe)
- Réinstaller complètement le système (on a que ça à faire peut-être…)
- Effacer le mot de passe et le remplacer par un nouveau mot de passe qu’on va retenir cette fois. (C’est ce que je vais expliquer)

{{{Contexte}}}
Partons du contexte le plus compliqué : vous avez un PC un peu comme le mien, sans lecteur CD, sans lecteur de disquettes. Oui, c’est un barebone qui me sert de serveur de fichiers, et donc je fais des économies d’énergie et de place car j’ai 3 disques durs à mettre dedans, donc y’a pas trop de place pour un lecteur CD-ROM ni de disquette. Dans un autre article, je vous parlerai de mon petit serveur :)

Un autre détail, vous avez paramétré le timeout du boot-loader (ici GRUB) à 0s, pour que le serveur boot plus rapidement.
Il n’y a donc aucun moyen de prendre la main avant le boot du système, ni en bootant sur CD ou disquette, ni en changeant la ligne de commande du boot.[[pour plus d'infos sur cette option, si vous êtes dans ce cas, allez voir "Step # 1 Boot server in single user mode" sur [http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/12/recovering-deleted-etcshadow-password.php]]

{{{Comment faire alors ?}}}
Ma solution est une des solutions et vous la retrouverez à pas mal d’endroits sur le net, mais je la re-explique quand même pour y ajouter des détails sur les « obstacles » que j’ai rencontré. Disons qu’au lieu d’obstacles, ce sont plutôt des finesses dans la procédure qu’il faut savoir pour pas s’énerver.

Donc, il suffit de booter avec un autre système sur votre PC et d’aller modifier le mot de passe root sur votre disque dur.

Pour cela il vous faut bien évidemment un système à booter. Si vous avez une clé USB bootable, par exemple avec une Damn Small Linux, ça fera l’affaire.

Sinon, si comme moi votre PC ne permet pas le boot sur clé USB [[je suis bien dégoûté sur ce coup là, ou alors il y a un truc qui m'échappe, mais j'ai réussi à booter sur ma clé avec un autre PC et pas sur celui-ci]], il ne vous reste plus qu’à booter sur CD ou sur disquette. Vu le merdier pour trouver une disquette de nos jours, je vous conseille plutôt de booter sur un CD.

Un liveCD fera largement l’affaire. Vous pouvez par exemple télécharger une Mandrake Move ou une SuSE Live CD ça marchera très bien. Alors bien sûr, il vous faut un accès à internet sur un autre PC avec un graveur pour graver l’image ISO du live CD, sinon, demandez à un pote qu’il vous en grave une.

Si vous n’avez pas de lecteur CD installé, ouvrez le PC et installez-en un, là où il y a de la place, ou sinon, laissez-le dehors ça lui fera prendre l’air.
Lancez votre PC et vérifiez dans votre BIOS que la séquence de boot permet bien de démarrer sur le CD-ROM avant le disque dur.

Notez que si vous n’avez ni disquette, ni possibilité de booter sur USB, ni accès au BIOS, il ne vous reste plus qu’à démonter votre disque dur et à aller le mettre sur un autre PC équipé au moins d’un lecteur CD bootable.

Sinon, si c’est ok, rebootez votre PC et lancez le live CD.
Une fois le live CD chargé, vous avez fait le plus dur :)
Il faut alors lancer une console de commande (xterm ou autre) et on va ensuite utiliser la commande « mount » (ici on est sur le système du live CD, pas sur votre propre linux donc il y a toutes les chances pour que vos partitions ne soient sûrement pas montées).

Une fois la console lancée, connectez-vous donc sous root. Vous êtes sur le liveCD, sur le Mandrake Move par exemple, il suffit donc de lancer la commande « su » sans besoin de mot de passe.
Une fois que vous êtes root [[on le voit car l'invite de commande se termine par un #, qui sera présenté dans tous mes exemples de ligne de commande suivants et qu'il ne faudra bien évidemment pas taper]] il faut monter la partition sur laquelle se trouve le système dont vous avez perdu le mot de passe root.

Le montage est une opération simple qui attribue à une partition un répertoire accessible sur lequel elle va se greffer.

Par exemple ici, on va monter notre partition hda2 dans /mnt/hda2 et cette partition est formatée en reiserfs, un format de système de fichiers journalisé comme on peut aussi avoir ext3 par exemple sur d’autres distributions.

{{{Comment repérer le nom de ma partition ?}}}
Si vous avez installé votre linux vous-même, il y a toutes les chances que vous sachiez quelle partition vous devez monter et de quel type elle est.

Sinon, demandez à la personne qui l’a installé pour vous ou suivez ces instructions simples :

Les partitions de disques durs IDE [[on ne parlera pas ici des volumes RAID ou SCSI ni SATA qui sont pointés différemment]] simples sont pointés par les adresses /dev/hdxx où xx correspond à une lettre et un chiffre. La lettre indique le disque sur lequel se trouve la partition.

Si votre disque est le disque maître sur le canal IDE1, la lettre sera « a », si c’est l’esclave sur ce même canal, ce sera « b ». S’il est maître sur le canal IDE 2, ce sera « c » et enfin s’il est esclave sur ce second canal, ce sera « d ».

Mon disque étant maître sur le canal IDE 1, il sera pointé par /dev/hda.

Ensuite, le numéro correspond au numéro de la partition.
Mon disque hda contient deux partitions, j’ai fait super simple. La première c’est un swap et la seconde est ma partition principale. Le swap est donc pointé par /dev/hda1 et ma partition principale par /dev/hda2.

Nous avons donc le chemin vers notre partition.

Pour ce qui concerne le format de la partition, si vous n’en avez aucune idée il suffit de ne rien préciser ou d’utiliser l’option « auto » de [la commande mount->http://www.netadmintools.com/html/8mount.man.html].

Il faut cependant créer un point de montage avant de pouvoir monter notre partition. Pour cela rien de plus simple, il suffit de créer un répertoire par exemple dans /mnt on va créer ici un répertoire hda2 en tapant la commande suivante :

# mkdir /mnt/monsysteme

Désormais on peut monter notre partition en lançant la commande « mount » suivante :

# mount /dev/hda2 /mnt/monsysteme

Si on connait le type de de formatage, on peut le préciser, cela gagne un peu de temps car mount n’a pas à essayer de découvrir lui-même le format :

# mount -t reiserfs /dev/hda2 /mnt/monsysteme

Pour avoir la liste complète des types admis, reportez-vous à la page de manuel de mount en tapant la commande

# man mount

ou en allant sur [une page de manuel en ligne de mount->http://www.netadmintools.com/html/8mount.man.html], rubrique « options ».

Pour vérifier que votre partition est bien montée, on ne regarde pas son slip, mais on vérifie simplement le montage avec la commande suivante

# mount -l

et on doit voir s’afficher la liste des périphériques montés et en particulier une ligne :

/dev/hda2 on mnt/monsysteme type reiserfs (rw)

{{{Localiser le mot de passe de root}}}
On doit maintenant localiser le mot de passe de root pour le modifier.
Si votre système est récent, il y a toutes les chances pour que les mots de passe soient définis dans le fichier /mnt/hda2/etc/shadow sous forme cryptée.

Ce fichier contient une ligne du type :

root:$2a$10$qLQjFUa2BReb.4ecp8eiq.YPS0b6epdxhw3je5/MrZoNtXwDFI0Ra:13192:0:99999:7:::

Chaque valeur est séparée par le signe « : ». La première est le nom de l’utilisateur, ici « root », la seconde est le mot de passe sous forme cryptée, ici « $2a$10$qLQjFUa2BReb.4ecp8eiq.YPS0b6epdxhw3je5/MrZoNtXwDFI0Ra ». C’est la version crypté du mot de passe « 1234″. Les autres champs sont des informations sur l’expiration du mot de passe, la date de dernière mise à jour, etc… pour plus d’infos allez lire [une page de manuel en ligne de /etc/shadow->http://www.netadmintools.com/html/5shadow.man.html].

Il s’agit donc de modifier le mot de passe crypté pour en remettre un qu’on connaisse.

Pourquoi ne pas simplement mettre aucun mot de passe me direz-vous ?
Tout simplement parce que cela risque fort de ne pas fonctionner car sur la plupart des distributions maintenant on utilise PAM qui est un module de gestion de l’identification et qui oblige s’il est correctement configuré à utiliser un mot de passe. Un compte sans mot de passe n’aurait pas le droit de se connecter. Il faut donc un mot de passe, ou alors aller fouiller dans la config de PAM, mais c’est pas le plus rapide si on veut retrouver son accès root rapidement, je n’en parlerai donc pas ici.

{{{Modifier le mot de passe root}}}
Maintenant qu’on a localisé l’emplacement de notre mot de passe, il s’agit de créer un mot de passe crypté pour le coller à la place de l’ancien.

Pour cela, le plus simple est de créer un nouvel utilisateur sur le système courant, c’est à dire le liveCD et de copier-coller le mot de passe qui sera généré dans le fichier /etc/shadow du système liveCD sur le mot de passe de root dans le fichier /mnt/hda2/etc/shadow.
Pour créer un nouvel utilisateur, par exemple « toto », lancez la commande suivante :

# useradd toto

Ensuite assignez-lui un mot de passe avec la commande passwd :

# passwd toto

Il vous est alors demandé deux fois de suite de taper le mot de passe. Entrez celui que vous voulez mettre pour root.

Ensuite, vérifiez dans le fichier /etc/shadow que le compte toto a bien une ligne du type

toto:$2a$10$qLQjFUa2BReb.4ecp8eiq.YPS0b6epdxhw3je5/MrZoNtXwDFI0Ra:13192:0:99999:7:::

Pour cela lancez la commande

# vi /etc/shadow

Copiez[[reportez vous à [un manuel de vi->http://www.eisti.fr/~bp/doc/viavance.html] pour savoir comment copier-coller. Si vous avez lancé un système graphique et que vous avez la souris, c’est tout simple, il suffit de surligner le texte à la souris pour copier et de le coller en utilisant le 3e bouton de la souris qui est la molette dans la plupart des cas. Pour passer en mode édition, faites escape puis la lettre « i ».]] la partie du mot de passe « $2a$10$qLQjFUa2BReb.4ecp8eiq.YPS0b6epdxhw3je5/MrZoNtXwDFI0Ra » et collez-la à la place de l’ancien mot de passe crypté dans le fichier /mnt/hda2/etc/shadow à la ligne de l’utilisateur root.

{{{C’est fini !}}}
Voilà, vous n’avez plus qu’à enregistrer[[sous vi, pour enregistrer, tapez escape, puis la commande :x qui écrit et quitte vi]] le fichier /mnt/monsysteme/etc/shadow et à rebooter votre PC en prenant soin d’enlever le liveCD et de booter sur votre vrai système.

Vous pouvez maintenant vous loguer avec root et le mot de passe que vous avez collé tout en vous répétant que la prochaine fois, vous essayerez de ne pas oublier votre mot de passe…

Notez quand même que pour cela il convient juste d’avoir de la mémoire, et qu’il n’est pas bon de choisir de noter le mot de passe sur un papier ou d’en mettre un trop simple. Cependant, cela dépend du niveau de sécurité que vous voulez, mais dès fois vous pouvez le noter et le cacher bien chez vous, mais pas trop quand même, après il va vous falloir un papier pour noter où vous avez caché le papier avec le mot de passe…

Laisser un Commentaire

RSS | XHTML | CSS