На прошлой неделе я по глупости сменил свой пароль шифрования для всего диска, потому что, по-видимому, я не смог надежно набрать предыдущий пароль. К сожалению, мой компьютер был включен с тех пор, и я нигде не записывал новый пароль, поэтому я забыл его. Не мой самый гордый момент, но я очень благодарен, что понял, прежде чем пришло время для ввода пароля. Я все еще вошел в компьютер, поэтому у меня есть доступ ко всем моим файлам, но как только я выключу компьютер, мне не повезет. Я хотел бы избежать переустановки всего, если смогу.
Итак, мой вопрос, есть ли способ восстановить / изменить мой пароль шифрования, пока я все еще вошел в систему как администратор?
Я соединяю некоторые сценарии, которые автоматизируют большую часть из этого, но если Вы не ожидали бы, я протестировал шаги ниже. Просто убедитесь, что Вы знаете то, что Вы делаете. Не слепо следуйте командам, которые я записал. Некоторые из них могут потребовать замен, характерных для Вашей конфигурации системы. После того как я закончил сценарии. Я загружу их на GitHub и отредактирую этот ответ.
К сожалению, Вы не собираетесь быть способными восстановить или изменить пароль шифрования. Вы не сможете создать любые новые или не имея одного из существующих ключей или паролей. Однако, так как в Вас входят система, Вы находитесь в удаче! Вот опция, которая технически не требует полной переустановки. Вы говорите использование шифрования целого диска таким образом, я собираюсь предположить, что у Вас есть два основных раздела на Вашем диске, разделе начальной загрузки и разделе LUKS (при использовании EFI у Вас, вероятно, есть третий раздел для этого). Затем Ваш дешифрованный раздел LUKS, вероятно, использует LVM для любого и всех других дешифрованных разделов.
Ваш вывод lsblk, вероятно, выглядит примерно так:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sda 8:0 0 16G 0 disk ├─sda2 8:2 0 488M 0 part /boot ├─sda3 8:3 0 15G 0 part │ └─sda3_crypt 253:0 0 15G 0 crypt │ ├─ubuntu--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
Единственная часть интереса здесь sda
диск.
Как заставить его произойти в целом
В основном бит системы, которая шифруется, sda3
, и это шифруется с LUKS. Раздел LUKS при разблокировании содержит физический том LVM, sda3_crypt
, это размещает единственную названную группу объема ubuntu--vg
. Эта группа объема затем содержит два логических тома LVM, ubuntu--vg-root
и ubuntu--vg-swap_1
. Если мы можем скопировать физический том LVM, sda3_crypt
, затем мы можем сдуть старый раздел LUKS на sda3
, создайте новый и выведите физический том LVM назад на новом разделе LUKS. Существует одна выгода, хотя! Все загрузочные файлы в Вашем разделе начальной загрузки, sda2
все еще сошлитесь на старый раздел LUKS, который Вы уничтожили. Необходимо обновить Ваш /etc/crypttab
файл, чтобы указать на новый раздел LUKS, что Вы создали и восстанавливаете свои initram диски. Только после этого закончен, должен Вы перезагружать свою систему.
Продолжите читать следующий раздел для фактических шагов, чтобы заставить это произойти.
Фактический пошаговый процесс
lsusb
с Вашим диском, присоединенным, и, определяют местоположение Вашего внешнего диска, sdb
в моем случае. sdb 8:16 0 16G 0 disk └─sdb1 8:17 0 16G 0 part /media/test/external-drive sr0 11:0 1 1024M 0 rom sda 8:0 0 16G 0 disk ├─sda2 8:2 0 488M 0 part /boot ├─sda3 8:3 0 15G 0 part │ └─sda3_crypt 253:0 0 15G 0 crypt │ ├─ubuntu--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
/media/test/external-drive
с фактическим путем к Вашему диску в следующей команде.sudo umount /media/test/external-drive
sdX
с устройством Вашего внешнего жесткого диска. В моем случае записал бы я ... of=/dev/sdb...
. Также замена sda3_crypt
с названием Вашего раздела LUKS. Это собирается занять хорошее долгое время. Мне потребовались 35 минут в тесте только с разделом LUKS на 16 ГБ.sudo dd if=/dev/mapper/sda3_crypt of=/dev/sdX bs=4M status=progress
sudo -i
sda3
. Замените корректным числом от своей системы вместо sdaN
в команде ниже.cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdaN
3
с соответствующим числом для Вашего устройства.cryptsetup luksOpen /dev/sda3 sda3_crypt
X
в sdX
с устройством Вашего внешнего диска. Замените 3
в sda3_crypt
с соответствующим количеством Вашего раздела. dd if=/dev/sdX of=/dev/mapper/sda3_crypt
3
с корректным числом для Вашего раздела. При запросе введите пароль, Вы создали это, Вы никогда не собираетесь забывать снова.cryptsetup /dev/sda3 sda3_crypt
vg=$(pvscan | grep PV | tr -s ' ' | cut -f 5 -d ' ')
<-сохраняют название группы объема к $vgexport uuid=$(blkid | grep LUKS | grep -oP "\bUUID=\".*?\"" | tr -d '"' | cut -f 2 -d '=')
<-сохраняют UUID LUKS к $uuid (это - вся одна строка),mount /dev/mapper/${vg/-/--}-root /mnt
mount /dev/sda2 /mnt/boot
mount /dev/sda1 /mnt/boot/efi
<-только делают это для систем 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
файл с UUID нового раздела LUKS.sed -i "s/UUID=\([0-9a-f\-]\+\)/UUID=$uuid/" /etc/crypttab
update-initramfs -k all -c
update-grub