当我选择在安装时使用 FDE 安装 Ubuntu 时,如何添加第二个密码来在启动时解密我的笔记本电脑。
在撰写本文时,只有一种方法可以选择使用 Ubuntu 安装 .iso GUI 安装带有全盘加密 (FDE) 的 Ubuntu,那就是选择创建加密的 LVM。
我知道向 LUKS 卷添加额外键槽的命令是:
cryptsetup luksAddKey /dev/<device>
...但 Ubuntu 使用的加密 LVM 设置有点复杂。它显示我有三个解密的 luks 设备:
user@host:$ ls /dev/mapper
control nvme0n1p3_crypt vgxubuntu-root vgxubuntu-swap_1
user@host:$
我应该输入什么命令来添加额外的 luks 密钥槽,以便我可以在启动时使用两个密码中的任一个解密我的笔记本电脑?
答案1
解决方案
以 结尾的_crypt
是您应该针对其执行的 luks 设备cryptsetup luksAddKey
(减去_crypt
部分)。对于您的情况,请执行:
# inspect the drive, note that the 0th key slot is the only key slot in use
cryptsetup luksDump /dev/nvme0n1p3
# dump the existing header and make a safe backup on another encrypted system
cryptsetup --header-backup-file header_backup luksHeaderBackup /dev/nvme0n1p3
# add a second passphrase to the 1st keyslot
cryptsetup --key-slot 1 luksAddKey /dev/nvme0n1p3
使用上述命令成功将第二个密码添加到第一个密钥槽后,就可以使用以下命令启动机器任何一个第一个密码(在密钥槽 #0 中)或者第二个密码(在密钥槽#1中)。
解释
默认情况下,Ubuntu 安装程序通过创建三个分区来设置 FDE:
- 未加密的 fat32 引导加载程序
- 未加密的 ext4 启动卷
- 大型加密 luks 卷
例如,你可以lsblk
针对你的磁盘看到这一点:
root@host:~# lsblk /dev/nvme0n1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
├─nvme0n1p2 259:2 0 732M 0 part /boot
└─nvme0n1p3 259:3 0 475,7G 0 part
└─nvme0n1p3_crypt 253:0 0 475,7G 0 crypt
├─vgxubuntu-root 253:1 0 474,8G 0 lvm /
└─vgxubuntu-swap_1 253:2 0 980M 0 lvm [SWAP]
root@host:~#
从上面的输出中可以看到,nvme0n1
磁盘有三个分区。在最后一个分区里面nvme0n1p3
,有一个巨大的解密卷nvme0n1p3_crypt
。
此外,里面nvme0n1p3_crypt
有两个lvm卷组vgxubuntu-root
& vgxubuntu-swap_1
。
您要对其执行命令的设备luksAddKey
是树中最低分支级别的磁盘上实际的 luks 加密分区lsblk
。在本例中,即/dev/nvme0n1p3
。