有没有办法加密磁盘而不格式化它?

use*_*ser 10 encryption luks disk-encryption

当我安装操作系统时,我没有加密。现在有没有办法在不格式化且不丢失任何数据的情况下对其进行加密?我阅读了一些如何加密的指南,每个指南都说我需要备份所有数据,因为我会丢失它。现在有没有办法加密它而不会丢失数据?

max*_*zig 9

是的,有办法。LUKScryptsetup实用程序包含reencrypt 命令,您也可以使用它来加密现有的未加密根分区,即不会破坏现有的文件系统。

也就是说,在执行此类转换之前,您仍应备份数据。当然,由于可能出现硬件故障等,应该始终定期执行备份。因此,这是一种多余的建议。

将现有的根文件系统从未加密切换到加密需要很多步骤:

  1. 备份
  2. 确保安装了 cryptsetup 包
  3. 确保您的根文件系统有一些可用空间(至少 100 MiB 以确保安全)
  4. 确定您的根分区所在的分区:例如使用df /,查找文件系统的 UUIDblkid并将其存储在某处
  5. 启动到救援系统,您可以在其中卸载根文件系统(例如,从包含Grml的 USB 记忆棒启动)
  6. 找到您的根分区(例如,使用blkid并查找 UUID)
  7. 如果是 ext4 执行文件系统检查: e2fsck -f /dev/sdXY
  8. 缩小文件系统以为 LUKS 标头腾出一些空间,例如,如果它是 ext4 文件系统:(resize2fs /dev/sdXY $smallersizeinGiB_G您需要将其缩小至少 32 MiB)
  9. 加密它: cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
  10. 打开它: cryptsetup open /dev/sdXY root
  11. 将文件系统放大到最大: resize2fs /dev/mapper/root
  12. 将它安装到 - 说 - /mnt/root
  13. 将引导文件系统挂载到/mnt/root并绑定挂载伪文件系统/dev, /sys,/proc/mnt/root
  14. 通过以下方式 chroot 进入您的系统: chroot /mnt/root /bin/bash
  15. /etc/default/grub或某个等效位置更新内核参数,例如,当您的发行版使用 dracut(很可能)时,您需要添加rd.luks.uuid=$UUID_OF_LUKS_DEVICE(参见blkid,注意此 UUID 与根文件系统不同),如果您安装了 selinux,则应添加enforcing=0(然后删除它)因为所有的编辑
  16. 如果您的发行版启用了 selinux,请配置重新标记: touch /mnt/root/.autorelabel
  17. 重新生成 grub 配置: grub2-mkconfig -o /boot/.../grub...cfg
  18. 重新生成 initramfs(以确保包含 cryptsetup 支持): dracut -f /boot/initramfs....img kernelversion
  19. 退出chroot
  20. 卸载所有东西
  21. cryptsetup close root
  22. 重启

如您所见,这些步骤很多,即存在一些引入错误的可能性。因此,可以说重新安装和恢复备份可能更简单(例如配置文件和$HOME)。

此外,根据我截至 2020 年的经验,cryptsetup reencrypt速度相对较慢,因此仅cryptsetup luksFormat使用设备并恢复备份可能会更快。

如果你有一个 XFS 文件系统,你不能只是缩小它,因为 XFS 不支持这个,截至 2020 年。因此,你需要fstransform它才能缩小它。使用转换后的文件系统,您需要处理另一个 uuid。这意味着要么将新文件系统的 UUID 更改为旧文件系统的 UUID。或者更新文件系统的 UUID/mnt/root/etc/fstab.

使用基于 dracut 的发行版,您不需要创建/etc/crypttab. 其他发行版可能需要它(也在 initramfs 更新之前,因为它可能需要包含在那里)。


ste*_*eve 8

来自 LUKS 常见问题https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#2-setup

2.5 我可以加密一个已经存在的非空分区来使用 LUKS 吗?

没有转换器,也不是真的需要它。这样做的方法
是备份有问题的设备,安全地擦除设备(因为 LUKS 设备初始化不会清除旧数据),
执行 luksFormat,可选择覆盖加密设备,创建
新文件系统并恢复您的在现在加密的设备上备份。
另请参阅“安全方面”和“备份和数据
恢复”部分。

对于备份,普通 GNU tar 运行良好,可以备份文件系统中可能存在的任何内容。*

但是,您可能需要查看https://johndoe31415.github.io/luksipc/usage.html#plain-to-luks-conversion “Plain to LUKS 转换”,它可以满足您的要求。免责声明:我从未尝试过这个,我不知道它是否有效,并且该项目自 2015 年以来似乎没有更新过。