use*_*ser 10 encryption luks disk-encryption
当我安装操作系统时,我没有加密。现在有没有办法在不格式化且不丢失任何数据的情况下对其进行加密?我阅读了一些如何加密的指南,每个指南都说我需要备份所有数据,因为我会丢失它。现在有没有办法加密它而不会丢失数据?
是的,有办法。LUKScryptsetup
实用程序包含reencrypt 命令,您也可以使用它来加密现有的未加密根分区,即不会破坏现有的文件系统。
也就是说,在执行此类转换之前,您仍应备份数据。当然,由于可能出现硬件故障等,应该始终定期执行备份。因此,这是一种多余的建议。
将现有的根文件系统从未加密切换到加密需要很多步骤:
df /
,查找文件系统的 UUIDblkid
并将其存储在某处blkid
并查找 UUID)e2fsck -f /dev/sdXY
resize2fs /dev/sdXY $smallersizeinGiB_G
您需要将其缩小至少 32 MiB)cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
cryptsetup open /dev/sdXY root
resize2fs /dev/mapper/root
/mnt/root
/mnt/root
并绑定挂载伪文件系统/dev
, /sys
,/proc
下/mnt/root
。chroot /mnt/root /bin/bash
/etc/default/grub
或某个等效位置更新内核参数,例如,当您的发行版使用 dracut(很可能)时,您需要添加rd.luks.uuid=$UUID_OF_LUKS_DEVICE
(参见blkid
,注意此 UUID 与根文件系统不同),如果您安装了 selinux,则应添加enforcing=0
(然后删除它)因为所有的编辑touch /mnt/root/.autorelabel
grub2-mkconfig -o /boot/.../grub...cfg
dracut -f /boot/initramfs....img kernelversion
cryptsetup close root
如您所见,这些步骤很多,即存在一些引入错误的可能性。因此,可以说重新安装和恢复备份可能更简单(例如配置文件和$HOME
)。
此外,根据我截至 2020 年的经验,cryptsetup reencrypt
速度相对较慢,因此仅cryptsetup luksFormat
使用设备并恢复备份可能会更快。
如果你有一个 XFS 文件系统,你不能只是缩小它,因为 XFS 不支持这个,截至 2020 年。因此,你需要fstransform
它才能缩小它。使用转换后的文件系统,您需要处理另一个 uuid。这意味着要么将新文件系统的 UUID 更改为旧文件系统的 UUID。或者更新文件系统的 UUID/mnt/root/etc/fstab
.
使用基于 dracut 的发行版,您不需要创建/etc/crypttab
. 其他发行版可能需要它(也在 initramfs 更新之前,因为它可能需要包含在那里)。
来自 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 年以来似乎没有更新过。