首先,我要说我不是LUKS的新手。无论是否使用LVM,我都使用键脚本多次设置了LUKS。我不确定这里到底发生了什么。我有一个具有单个加密分区的系统。我的驱动器组织如下:
#lsblk 名称:最低RM尺寸RO型MOUNTPOINT sda 8:0 0 128G 0磁盘 s─sda18:1 0 128G 0部分 ├─vg0-root253:1 0 20G 0 lvm / ├─vg0-安全253:6 0 100M 0 lvm │└─安全253:7 0 98M 0 crypt / root / secure └─vg0交换253:4 0 1G 0 lvm [SWAP]
我的/etc/crypttab
档案看起来像这样
#此处不需要UUID,因为到LV的路径不会改变 安全的/ dev / vg0 / secure none luks,keyscript = / lib / cryptsetup / scripts / insecure
我的/lib/cryptsetup/scripts/insecure
文件是可执行文件,看起来像这样
#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.
echo -n "my-encryption-password"
update-initramfs -k all -u
配置crypttab并将我的脚本文件放置到位后,我已经运行了很多次。
据我所知,我的脚本文件甚至没有被复制到initrd.img文件中。现在考虑了一下,我不认为它将被复制到initrd.img文件中,因为根分区未加密,脚本文件应该可以从那里方便地访问。
重新启动后,系统会从crypttab中看到记录,并要求输入密码(在我的情况下该密码实际上不存在,因为唯一的密钥是充满随机位的密钥文件),而不是使用密钥脚本来解锁LUKS分区。我尝试将LUKS从LVM中取出并放在sda2上,结果是相同的。我也知道该键脚本可以正常工作,因为它cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"
就像一个超级按钮一样可以解密我的LUKS分区。
我已经在Ubuntu 16.04.2和Ubuntu Mate 16.04.2中尝试了相同的结果。我之前使用过脚本没有任何麻烦。唯一的区别是,过去,我的/分区始终是加密的。如果有人可以阐明一下,我将不胜感激。我只想要一个很小的加密分区,因为我打算克隆该系统,并且我不想用整个/分区加密来克隆它。
更新2017-04-26
在浏览日志时,我发现一行带有以下错误,这没有任何意义。因为什么时候'keyscript = / path / to / script'是crypttab的未知选项?
... systemd-cryptsetup [737]:遇到未知的/ etc / crypttab选项'keyscript = / lib / cryptsetup / scripts / insecure',忽略。
只是为了踢球,我尝试删除keyscript选项并使用密钥文件,并且一切都正常!实际上,我尝试了其他选项,例如keyfile-offset,它们也起作用。因此,问题出在关键脚本选项的某个地方。有谁知道为什么吗?