LUKS 和循环设备

LUKS 和循环设备

我阅读了很多关于 LUKS/dm-crypt/cryptsetup 的教程,特别是有关如何创建加密文件容器的教程。

第一步是使用 创建文件dd

然后,一些教程将文件映射到/dev/loop0循环设备并格式化,其他教程直接格式化文件而不将其映射到循环设备中。

我的问题:循环设备步骤是否必要? 有什么区别?

答案1

您可以使用ddfallocate(或head一些其他工具)创建一个文件作为容器。然后如 Vincent Yu 所述,cryptsetup它可以为您处理循环设置/拆卸。

fallocate -l 100M mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup -y luksFormat mypath/filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo cryptsetup luksOpen mypath/filecontainer filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script
sudo mkfs -t ext4 /dev/mapper/filecontainer
sync
sudo cryptsetup luksClose filecontainer
sudo losetup # Debug for demonstration, not necessary in a real script

在调试输出中sudo losetup,注意AUTOCLEAR = 1条目的filecontainer。您可以而是疯狂地loopdev=$(sudo losetup -f); mount -o loop <etc>,但让cryptsetup处理它是方式更好。

关键是您要确保首先使用它默认cryptsetup luksOpen containerfile mappedname安装(您可以给它一个以 开头的完整路径,我相信它会安装在那里,然后格式化目标并确保您没有直接接触,否则您将绕过加密引擎并仅创建一个未加密的环回文件。/dev/mapper/mappedname//dev/mapper/mappednamefilecontainer

答案2

如果您不亲自管理循环设备,cryptsetup则会自动设置循环设备并在不再需要时将其关闭。因此两者之间没有区别;cryptsetup始终在循环设备上工作。请参阅man cryptsetup

环回设备使用注意事项

Cryptsetup 通常直接用于块设备(磁盘分区或 LVM 卷)。但是,如果设备参数是文件,cryptsetup 会尝试分配一个回送设备并将其映射到此文件中。此模式需要 Linux 内核 2.6.25 或更高版本,该版本支持循环自动清除标志(循环设备在上次关闭时自动清除)。当然,您始终可以手动将文件映射到循环设备。请参阅 cryptsetup FAQ 以获取示例。

当设备映射处于活动状态时,您可以在状态命令输出中看到循环支持文件。另请参阅 losetup(8)。

相关内容