![加密单独的根分区和主分区](https://linux22.com/image/174860/%E5%8A%A0%E5%AF%86%E5%8D%95%E7%8B%AC%E7%9A%84%E6%A0%B9%E5%88%86%E5%8C%BA%E5%92%8C%E4%B8%BB%E5%88%86%E5%8C%BA.png)
所以我尝试使用单独的根分区和主分区(还有交换和引导 ofc)来安装 Arch Linux。基本上我已经对它们进行了分区,我已经安装了它们,并且我已经加密了/
并且/home
(使用cryptsetup luksFormat
)。它看起来像这样lsblk
:
现在我正在努力实现以下目标:
- 我想在系统启动时解密所有分区,而不必为每个分区键入密码(顺便说一句,我已将它们设置为相同)
- 我想为加密分区配置 GRUB,但到目前为止我只看到过配置,
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdXY:cryptroot"
而且我有两个,所以我真的不知道应该在这里放什么(也许只有/
一个?)
所以现在我陷入了我想要运行但又不能运行的阶段,mkinitcpio
因为grub-install/grub-mkconfig
如果没有正确的 GRUB 配置,我可能无法启动我的系统。
你们知道我将如何实现这一目标吗?第二个问题更重要,因为有关于第一个问题的文档,我想只是想把它放在那里以获得一个简短的建议,这是我在过去两个小时里一直在摸索的第二个问题。
答案1
欢迎来到 Unix 和 Linux StackExchange!
生成的initramfs文件的作用mkinitcpio
只是解锁并挂载根文件系统;挂载其他文件系统/home
将在引导过程稍后发生,在根文件系统解锁并挂载之后。 GRUB 不需要了解有关/home
文件系统的任何信息。
该cryptdevice
选项为 initramfs 文件中的脚本提供信息,用于解锁根文件系统的加密。如果您的系统配置稍后发生变化,这使您可以轻松更改假定保存加密根文件系统的设备的名称。为了在系统配置发生意外更改时保持鲁棒性,您实际上可能希望使用语法UUID=<UUID_of_sda3>
来代替设备名称。
/home
因此,您可以配置使用存储在根文件系统中某处的密钥文件的加密。由于密钥文件位于加密分区内,因此当系统不运行时它将受到保护。当根文件系统可访问后,/etc/crypttab
将能够引用该文件,因此/home
文件系统的加密可以自动解锁。
根据Arch wiki 的 crypttab 段落/home
,您的文件系统的条目/etc/crypttab
可能如下所示:
crypthome /dev/sda4 /etc/cryptsetup-keys.d/crypthome.key
您可能还想使用UUID=<UUID of sda4>
此处而不是设备名称。
您将确保/etc/cryptsetup-keys.d/
只能由 root ( ) 访问chmod 700
,并将文件系统的密码写入/home
该crypthome.key
文件。如果入侵者可以读取此内容,则意味着入侵者具有有效的 root 访问权限,因此他们可以将您的cryptsetup
命令替换为通过电子邮件将任何密码短语发送给入侵者的命令,无论它们是键入还是从文件中读取,因此此时您无论如何都会有更大的担忧。