问题描述
我在 SSD 设备上安装了 Xubuntu 14.04(在安装过程中 HOME 被正确加密),另外我有一个带有加密分区的 HDD,其中包含我想挂载在 /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"
使用正确的密码短语制作一个密钥文件并将其保存在我的 HOME 中(这也是加密的)。
sudo dd if=/dev/urandom of=/home/[USERNAME]/.keyfiles/key_luks bs=1024 count=4
sudo chmod 0400 .keyfiles/key_luks
添加密钥
sudo cryptsetup luksAddKey /dev/sda1 /home/zeugor/.keyfiles/key_luks
/etc/crypttab 中的新条目
hddencrypted UUID=b3024cc1-93d1-439f-80ce-1b1ceeafda1e /home/[USERNAME]/.keyfiles/key_luks luks
更新初始 ramdisk
sudo update-initramfs -u -k all
然后,为了测试它,我使用以下命令启动 cryptdisks:
sudo cryptdisks_start hddencrypted
* Starting crypto disk...
* hddencrypted (starting)..
* hddencrypted (started)...
要检查 hddencrypted 是否已映射:
ls /dev/mapper/
control hddencrypted
创建挂载点
mkdir /mnt/hdd
/etc/fstab 中的新条目
/dev/mapper/hddencrypted /mnt/hdd ext4 defaults 0 2
在不重启的情况下验证 fstab:
sudo mount -a
在启动时挂载加密分区
现在我已经按照我的建议将它安装在/mnt/hdd 中。但我想在重启后自动执行此操作。但是在我登录之前,我收到了这个错误:
the disk drive for /mnt/hdd is not ready yet or not permit
所有这些让我认为 /etc/crypttab 无法访问位于我的 HOME(其他加密分区)中的密钥文件。我不知道系统在未加密和安装单元时遵循的顺序。我的 HOME 应该在我的 HDD 之前未加密,以授予读取密钥文件的权限。
对于为什么会发生这种情况,我将不胜感激。
更新:\n如果我在 /boot(未加密)中找到密钥文件,而不是在我的 /home/[USERNAME](加密)/dev/sda1 中,并更新 /etc/crypttab 中的条目,则在启动时完美安装。
最佳办法
/boot 目录中的密钥文件可以被在您的机器上启动的任何其他操作系统读取,这些操作系统能够将文件系统挂载到 /boot 所在的位置。因此,加密并不是真正有效的。此参数适用于未加密文件系统上的所有密钥文件位置。
为了避免未加密文件系统上的密钥文件,可以使用密码进行解密。为设备创建一个强密码。然后,将 /etc/crypttab 中的行更改为
hddencrypted UUID=b3024cc1-93d1-439f-80ce-1b1ceeafda1e none luks
并保持 /etc/fstab 中的条目不变。 Ubuntu 14.04/16.04/18.04 在启动时要求您输入密码。
次佳办法
如果将 fstab 中的 “defaults” 替换为
rw,suid,dev,exec,auto,user,async,relatime
(根据 mount 手册页,除 “user” 外,它与 “defaults” 相同。)