如果我有一个像 /dev/hd1 这样的未加密分区并希望对其进行加密,但希望将当前所有内容保留在该分区中,我该怎么做?
小智 20
由于这出现在谷歌结果的顶部附近,添加解决方案:
LUKS 通过http://www.johannes-bauer.com/linux/luksipc/进行就地加密
我刚刚偶然发现了这个相当老的问题,并想指出cryptsetup已经获得了cryptsetup 重新加密选项。该文档列出了重新加密设备的示例:
加密 LUKS2 设备(就地)。确保 /dev/plaintext上的最后 32 MiB未使用(例如:不包含文件系统数据):
Run Code Online (Sandbox Code Playgroud)cryptsetup reencrypt --encrypt --type luks2 --reduce-device-size 32m /dev/plaintext_device
该文档有更多示例,例如首先初始化设备、使设备在线、在使用时对其进行加密。此外,重新加密似乎具有弹性,因为它可以停止和重新启动,从而允许复杂的用例。
请注意,仍然需要写入 luks 标头,因此存在大小限制,这意味着您应该非常小心,最好在尝试此操作之前测试您的特定场景(例如在具有合理测试数据的另一台设备上)。该--reduce-device-size选项有更多关于此的信息。
重新加密时,该工具将输出有关大小、速度和预计到达时间的信息,恕我直言,这使得它非常用户友好。
一般工作流程如下:
btrfs fi resize -32m /mnt)cryptsetup reencrypt --encrypt --type luks2 --reduce-device-size 32m /dev/sda4)cryptsetup open像往常一样,并像往常一样使用块设备的 UUID(块设备本身现在有一个从 luks 层派生的 UUID),例如在启动过程/initrd 中如果您选择 plain ,这是微不足道的dm-crypt。这是有风险的 - 如果它在中途失败(停电或其他),那么你就饱了!
确保未安装原始设备,然后为其创建一个加密设备并用于dd从原始设备复制到加密设备:
$ cryptsetup open /dev/sda sda-crypt --type plain
$ dd if=/dev/sda of=/dev/mapper/sda-crypt bs=512
Run Code Online (Sandbox Code Playgroud)
明文数据从/dev/sda设备映射器中读取和写入,设备映射器/dev/mapper/sda-crypt对其进行加密并将其写回到 中/dev/sda,从而覆盖读取的明文数据。
由于读取和写入整个磁盘,可能需要一些时间。
小智 5
似乎没有解决方案可以做到这一点。Truecrypt 仅为 Windows 提供系统加密,dm-crypt 会覆盖分区。您最好的选择是将所有内容从该分区移动到备份中cp -a,使用 luks/dm-crypt 创建一个加密分区,然后将所有内容移回来。
| 归档时间: |
|
| 查看次数: |
31235 次 |
| 最近记录: |