如何使加密卷在未提供密码时不会启动失败

如何使加密卷在未提供密码时不会启动失败

当我在我的 debian squeeze 机器上设置一些加密分区时,一切都非常简单。我按照一些操作指南并使用 cryptsetup 创建了现在包含 /home 和 /srv 的加密分区。系统本身(根安装点和引导)尚未加密。

启动时的行为是:

  • 系统要求输入加密分区的密码。
  • 如果输入正确,系统将启动,并且分区将按照 fstab 中所述安装。
  • 如果省略或输入 false 三次,系统无论如何都会以多用户模式启动,并且可以稍后手动解锁和安装分区。

在进行了一些更新和升级后(现在是 Jessie),行为发生了变化。如果省略密码或密码不正确,系统将启动到“紧急模式”,要求输入 root 密码。

我尝试用谷歌搜索,但无论我找到什么,都没有改变这一点。您必须正确输入密码,否则启动会失败。由于机器通常在偏远的地方运行,周围没有人对非 Windows 环境有足够的了解,所以这不是理想的情况。

:# uname -a

Linux cypher 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) i686 GNU/Linux

:# cat /etc/fstab

UUID=3c3fb5a8-ec8c-49d4-a36c-d3a39d321f49 /  ext3          user_xattr,errors=remount-ro 0  1
/dev/mapper/sda3_crypt  /home                ext4          usrquota,grpquota,user_xattr 0  2
/dev/mapper/sda4_crypt  /srv                 ext4          usrquota,grpquota,user_xattr 0  2
/dev/sda2               none                 swap          sw                           0  0
/dev/sr0                /media/cdrom0        udf,iso9660   user,noauto                  0  0

:# cat /etc/crypttab

sda3_crypt UUID=a89934ba-d90c-415d-b021-05be84995e8b none nofail
sda4_crypt UUID=4134177b-5622-4cef-9844-c83efad8d029 none nofail

在尝试使用 crypttab 中的不同选项时,我总是

update-initramfs -u -k all

在尝试下一次启动之前。我甚至不知道这是否有必要。

我不知道我必须做些什么才能实现“旧”行为,如果有人能告诉我我在寻找什么,我会很高兴。


回应 StackAbstraction 的评论:未加密的交换分区是最近错误的结果。起初它是加密的。由于某种未知原因,它突然拒绝解锁,导致启动失败。重新格式化并设置加密后,一切都应该没问题 - 但事实并非如此。在任何启动时,我都会收到一条关于“缺少 LVM”的消息,我必须从救援启动才能再次进入系统。

我无法解决这个问题,而且由于加密的目的更多是为了保护存储的数据,如果物理设备从服务器机房被盗,风险似乎并不高。这也是不保护根分区的原因。要保护的数据仅存储在加密分区上。

但是,评论并没有指出给定的问题。我目前意识到未加密交换和根分区的潜在风险。如果没有提供密码,我看不出切换到卷组如何解决启动失败的问题,除非在启动时不要求输入卷组的密码(这不是理想的行为)——我不知道这是否属实。

答案1

尝试添加nobootwait旗帜fstab加密分区的条目。

答案2

其实还有一个nofail选择,fstab所以应该这样做两个都让 cryptab 在解密时失败,然后让 fstab 在挂载时失败。

/dev/mapper/sda3_crypt  /home  ext4  usrquota,grpquota,user_xattr,nofail 0  2
/dev/mapper/sda4_crypt  /srv   ext4  usrquota,grpquota,user_xattr,nofail 0  2

相关内容