cryptsetup 可以从 /etc/crypttab 读取映射吗?

Cra*_*nch 10 disk-encryption luks

我有一个虚拟化的 CentOS 7 服务器,它需要挂载多个受密码保护的加密卷。我无法在启动时自动映射设备,因为在启动过程中我无法访问控制台以输入解密密码。重新启动系统后,我必须手动运行

cryptsetup luksOpen <device> <name>
Run Code Online (Sandbox Code Playgroud)

将每个底层块设备映射到加密设备。这需要记录每个底层块设备的 UUID 及其映射到的名称。有没有简单的方法来自动化这个过程?我可以/etc/crypttab使用noauto关键字添加信息以防止设备在启动时挂载。但是,我无法让 cryptsetup 使用此文件中的信息。

如果有这样的命令这将是巨大的cryptsetup luksOpen <name>,将读取/etc/crypttab找到基本块设备(类似于你可以能方式的名称mount <mountpoint>,如果被定义/etc/fstab)。

有没有办法让 cryptsetup 从中读取映射/etc/crypttab

小智 5

看看cryptdisks_startcryptdisks_stop,他们就是这样做的。

# cryptdisks_start <name>
# mount <mountpoint>
...stuff...
# umount <mountpoint>
# cryptdisks_stop <name>
Run Code Online (Sandbox Code Playgroud)

  • 大多数 Linux 发行版上都没有这些 Debian 主义。 (8认同)

小智 5

您可以使用

sudo systemctl start systemd-cryptsetup@<name>

代替

cryptsetup luksOpen UUID=... <name>

当您的 /etc/crypttab 中有如下条目时:

<name> UUID=... none noauto

如果需要,它会提示您输入密码。

相应的单元文件由systemd-cryptsetup-generator自动生成

您可以使用列出所有生成的单元文件

systemctl list-unit-files| grep systemd-cryptsetup


Mic*_*ton 0

我想你想尝试一下systemd-cryptsetup-generator

通常,此进程在 initramfs 引导期间运行,以动态生成解密中列出的每个块设备的 systemd 单元/etc/crypttab。然后,您可以随时启动这些单元,系统会提示您输入任何必要的密码。

由于这是虚拟机,您应该有权访问虚拟控制台,这意味着您可以简单地正常加密文件系统并在启动时提供密码。当然,无论您何时输入密码,加密文件系统的安全性无论如何都会受到损害,只要在虚拟机中使用即可。