启动时挂载 LUKS 加密硬盘

zeu*_*gor 26 encryption partitioning fstab mount luks

我在 SSD 设备上安装了 Xubuntu 14.04(在安装过程中对HOME进行了正确加密),此外,我还有一个带有加密分区的硬盘驱动器,其中包含我想安装在/mnt/hdd 中的额外数据。为了制作这些,我遵循了以下步骤:

(之前我在这篇文章http://www.marclewis.com/2011/04/02/luks-encrypted-disks-under-ubuntu-1010/ 之后用 LUKS 加密了磁盘)

检查 UUID

sudo blkid 
/dev/sda1: UUID="b3024cc1-93d1-439f-80ce-1b1ceeafda1e" TYPE="crypto_LUKS"
Run Code Online (Sandbox Code Playgroud)

做一个密钥文件,我用正确的密码并保存HOME(这也被加密)。

sudo dd if=/dev/urandom of=/home/[USERNAME]/.keyfiles/key_luks bs=1024 count=4
sudo chmod 0400 .keyfiles/key_luks
Run Code Online (Sandbox Code Playgroud)

添加密钥

sudo cryptsetup luksAddKey /dev/sda1 /home/zeugor/.keyfiles/key_luks
Run Code Online (Sandbox Code Playgroud)

/etc/crypttab 中的新条目

hddencrypted UUID=b3024cc1-93d1-439f-80ce-1b1ceeafda1e /home/[USERNAME]/.keyfiles/key_luks luks
Run Code Online (Sandbox Code Playgroud)

更新初始 ramdisk

sudo update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)

然后,为了测试它,我使用以下命令启动 cryptdisks:

sudo cryptdisks_start hddencrypted 
 * Starting crypto disk...                                                       
 * hddencrypted (starting)..
 * hddencrypted (started)... 
Run Code Online (Sandbox Code Playgroud)

要检查hddencrypted 是否已映射:

ls /dev/mapper/
control  hddencrypted
Run Code Online (Sandbox Code Playgroud)

创建挂载点

mkdir /mnt/hdd
Run Code Online (Sandbox Code Playgroud)

/etc/fstab 中的新条目

/dev/mapper/hddencrypted /mnt/hdd ext4 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

无需重启验证 fstab:

sudo mount -a
Run Code Online (Sandbox Code Playgroud)

在启动时挂载加密分区

现在我已经按照我的建议将它安装在/mnt/hdd 中。但我想在重启后自动进行。但是在我登录之前,我收到了这个错误:

the disk drive for /mnt/hdd is not ready yet or not permit
Run Code Online (Sandbox Code Playgroud)

这一切让我觉得,在/ etc / crypttab中不能访问到位于在我的密钥文件HOME(其它加密分区)。我不知道系统遵循未加密和安装单元的顺序。我的HOME应该在我的 HDD 之前未加密,以便访问读取密钥文件。

我将不胜感激任何有关为什么会发生这种情况的见解。

更新: 如果我在/boot(未加密)中找到密钥文件,而不是在我的/home/[USERNAME](加密)中,则/dev/sda1和更新/etc/crypttab 中的条目在启动时完美安装。

小智 10

/boot 目录中的密钥文件可以被您的机器上启动的任何其他操作系统读取,这些操作系统能够在 /boot 所在的位置挂载文件系统。因此,加密并不是真正有效的。此参数适用于未加密文件系统上的所有密钥文件位置。

为了避免未加密文件系统上的密钥文件,可以使用密码进行解密。为设备创建一个强密码。然后,将 /etc/crypttab 中的行更改为

hddencrypted UUID=b3024cc1-93d1-439f-80ce-1b1ceeafda1e none luks
Run Code Online (Sandbox Code Playgroud)

并保持 /etc/fstab 中的条目未修改。Ubuntu 14.04/16.04/18.04 在启动时要求您输入密码。


小智 6

如果将 fstab 中的“默认值”替换为

rw,suid,dev,exec,auto,user,async,relatime
Run Code Online (Sandbox Code Playgroud)

(根据mount手册页,除了“user”之外,它与“defaults”相同。)