J'ai bêtement changé la semaine dernière mon mot de passe de chiffrement de lecteur complet parce que j'étais apparemment incapable de taper de manière fiable le mot de passe précédent. Malheureusement, mon ordinateur est allumé depuis et je n’ai écrit le nouveau mot de passe nulle part, je l’ai donc oublié. Ce n’est pas mon moment de fierté, mais je suis extrêmement reconnaissant d’avoir réalisé avant que le temps ne soit venu d’entrer le mot de passe. Je suis toujours connecté à l'ordinateur pour pouvoir accéder à tous mes fichiers, mais dès que je l'éteins, je n'ai plus de chance. Je voudrais éviter d'avoir à tout ré-installer si je peux.
Ma question est donc la suivante: existe-t-il un moyen de récupérer/modifier mon mot de passe de cryptage alors que je suis toujours connecté en tant qu'administrateur?
Je suis en train de mettre au point des scripts qui automatiseront la plupart de ces opérations, mais si vous préférez ne pas attendre, j'ai testé les étapes ci-dessous. Assurez-vous simplement de savoir ce que vous faites. Ne suivez pas aveuglément les commandes que j'ai écrites. Certaines d'entre elles peuvent nécessiter des substitutions spécifiques à la configuration de votre système. Une fois que j'ai fini les scripts. Je vais les télécharger sur GitHub et modifier cette réponse.
Malheureusement, vous ne pourrez pas récupérer ou modifier le mot de passe de cryptage. Vous ne pourrez pas en créer de nouveaux non plus sans avoir l'une des clés ou des phrases secrètes existantes. Cependant, puisque vous êtes connecté au système, vous avez de la chance! Voici une option qui, techniquement, ne nécessite pas de réinstallation complète. Vous dites que vous utilisez le chiffrement intégral du lecteur, je suppose donc que vous avez deux partitions principales sur votre lecteur, une partition de démarrage et une partition LUKS (si vous utilisez EFI, vous avez probablement une troisième partition). cette). Ensuite, votre partition LUKS déchiffrée utilise probablement LVM pour toutes les autres partitions déchiffrées.
Votre sortie de lsblk ressemble probablement à ceci:
NOM MAJ: MIN RM TAILLE RO TYPE MOUNTPOINT Sr0 11: 0 1 1024M 0 rom Sda 8: 0 0 16G 0 disque Sda2 8: 2 0 488M 0 partie /boot ├─sda3 8: 3 0 15G 0 partie Sda3_crypt 253: 0 0 15G 0 crypt Untubuntu - vg-root 253: 1 0 11.8G 0 lvm / │ ubuntu - vg-swap_1 253: 2 0 3.3G 0 lvm [SWAP] Sda1 8: 1 0 512M 0 part /boot/efi
La seule partie intéressante ici est le disque sda
.
Comment y arriver, en général
Fondamentalement, le bit du système crypté est sda3
, et il est crypté avec LUKS. Une fois déverrouillée, la partition LUKS contient un volume physique LVM, sda3_crypt
, qui héberge un seul groupe de volumes nommé ubuntu--vg
. Ce groupe de volumes contient ensuite deux volumes logiques LVM, ubuntu--vg-root
et ubuntu--vg-swap_1
. Si nous pouvons sauvegarder le volume physique LVM, sda3_crypt
, nous pouvons alors supprimer l'ancienne partition LUKS sur sda3
, en créer un nouveau et vider le volume physique LVM sur la nouvelle partition LUKS. Il y a une prise, cependant! Tous les fichiers de démarrage de votre partition de démarrage, sda2
, font toujours référence à l'ancienne partition LUKS que vous avez détruite. Vous devez mettre à jour votre fichier /etc/crypttab
pour qu'il pointe vers la nouvelle partition LUKS que vous avez créée et reconstruire vos disques initram. Une fois que cela est terminé, vous devez redémarrer votre système.
Continuez à lire la section suivante pour connaître les étapes à suivre pour y arriver.
Le processus pas à pas réel
lsusb
avec votre lecteur connecté et localisez votre disque externe, sdb
dans mon cas. sdb 8:16 0 16G 0 disque sdb1 8:17 0 16G 0 partie /media/test/external-drive sr0 11: 0 1 1024M 0 rom sda 8: 0 0 16G 0 disque [.________ Dasda3_crypt 253: 0 0 15G 0 crypt. 0 3.3G 0 lvm [SWAP] Sda1 8: 1 0 512M 0 part /boot/efi
/media/test/external-drive
par le chemin d'accès réel à votre lecteur dans la commande suivante.Sudo umount /media/test/external-drive
sdX
par le périphérique de votre disque dur externe. Dans mon cas, j'écrirais ... of=/dev/sdb...
. Remplacez également sda3_crypt
par le nom de votre partition LUKS. Cela va prendre un bon bout de temps. Il m'a fallu 35 minutes pour un test avec une partition LUKS de 16 Go seulement.Sudo dd if=/dev/mapper/sda3_crypt of=/dev/sdX bs=4M status=progress
Sudo -i
sda3
. Substituez le numéro correct de votre système à la place de sdaN
dans la commande ci-dessous.cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdaN
3
par le numéro approprié pour votre périphérique.cryptsetup luksOpen /dev/sda3 sda3_crypt
X
dans sdX
par le périphérique de votre lecteur externe. Remplacez le 3
dans sda3_crypt
par le numéro approprié de votre partition. dd if=/dev/sdX of=/dev/mapper/sda3_crypt
3
par le numéro correct pour votre partition. Lorsque vous y êtes invité, entrez le mot de passe que vous avez créé et que vous n'oublierez jamais.cryptsetup /dev/sda3 sda3_crypt
vg=$(pvscan | grep PV | tr -s ' ' | cut -f 5 -d ' ')
<- enregistre le nom du groupe de volumes dans $ vgexport uuid=$(blkid | grep LUKS | grep -oP "\bUUID=\".*?\"" | tr -d '"' | cut -f 2 -d '=')
<- Sauvegarde l’UUID LUKS dans $ uuid (c’est une seule ligne)mount /dev/mapper/${vg/-/--}-root /mnt
mount /dev/sda2 /mnt/boot
mount /dev/sda1 /mnt/boot/efi
<- Ne le faites que pour les systèmes UEFImount --bind /dev /mnt/dev
mount --bind /run/lvm /mnt/run/lvm
chroot /mnt
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts
/etc/crypttab
avec l'UUID de la nouvelle partition LUKS.sed -i "s/UUID=\([0-9a-f\-]\+\)/UUID=$uuid/" /etc/crypttab
update-initramfs -k all -c
update-grub