Ubuntu 加密 SSD + /home (HDD)

Ubuntu 加密 SSD + /home (HDD)

我有一个 SSD 和 HDD。

安装 Ubuntu 时,我想要“擦除磁盘并安装 Ubuntu”以及“为了安全起见加密新的 Ubuntu 安装”。

这使得我的 /home 位于 SSD 下,但我希望将其位于 HDD 下,并且加密。我该怎么做?

编辑

sda                       8:0    0 223,6G  0 disk  
├─sda1                    8:1    0   512M  0 part  /boot/efi
├─sda2                    8:2    0   732M  0 part  /boot
└─sda3                    8:3    0 222,4G  0 part  
  └─sda3_crypt          253:0    0 222,4G  0 crypt 
    ├─ubuntu--vg-root   253:1    0 206,4G  0 lvm   /
    └─ubuntu--vg-swap_1 253:2    0  15,9G  0 lvm   [SWAP]
sdb                       8:16   0 931,5G  0 disk  
└─sdb1                    8:17   0 931,5G  0 part  
  └─home_drive          253:3    0 931,5G  0 crypt /mnt
  • 交换调整大小将是下一步(甚至禁用)

答案1

啊,自定义分区。这很有趣,尤其是当你尝试加密跨卷时。我假设你不想去太疯狂(是的,这是我的分区结构)并在此处使用 LUKS 内的 LVM。我还假设您已经安装了一些东西,因为它会使这个过程稍微容易一些。

第一部分:设置你的 LUKS 分区

您必须首先在硬盘上创建一个新的 EXT4 分区。让它占用您想要的空间。

接下来,您需要运行cryptsetup以实际设置加密。您需要的命令是:

cryptsetup luksFormat /dev/sdXY

替换/dev/sdXY为指向新 EXT4 分区的任何内容。系统将提示您选择密码。选择一个强密码,然后写下来。当你完成时,你不必记住它(当我们进一步阅读这篇文章时,你就会明白为什么)。

接下来,我们需要ext4在 LUKS 容器内创建另一个分区,该分区最终将用于保存/home。以下命令将实现此目的:

cryptsetup open --type luks /dev/sdXY home_drive
mkfs -t ext4 /dev/mapper/home_drive
cryptsetup close home_drive

接下来,运行blkid并记下新 LUKS 容器的 UUID(在/dev/sdXY)。你马上就会需要它。


第二部分:启用自动解密

现在,我们需要设置一个名为的东西decrypt_derived,它允许您“链接”解密操作。

通过这样做,我们将允许一个密码在两个驱动器上起作用。实际上,解密的第一个驱动器将成为第二个驱动器的密码。您的密码(上面选择的)在紧急情况下仍然有效(例如数据恢复或类似情况)。

运行以下命令/文件编辑。务必将其重命名ubuntu_crypt为您当前的 crypt 名称(请参阅/etc/crypttab以找到此名称)。还请将其替换/dev/sdXY为您的新 LUKS 分区。

/lib/cryptsetup/scripts/decrypt_derived ubuntu_crypt > /tmp/home_keyfile
cryptsetup luksAddKey /dev/sdXY /tmp/home_keyfile
shred -u /tmp/home_keyfile

接下来,您需要添加以下行/etc/crypttab

home_drive UUID=<your_drive_uuid> ubuntu_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

如果您使用 SSD 作为家庭硬盘,请务必将其替换luks,keyscript=...luks,discard,keyscript=...


第三部分:添加到/etc/fstab

现在您的系统已设置好并可以自动安装驱动器,我们需要意识到/etc/fstab这一点。

/幸运的是,这仅需在 中的条目下方添加一行/etc/fstab。此行将类似于:

/dev/mapper/home_drive    /mnt    ext4    errors=remount-ro    0    1


第四部分:测试

接下来,您将要挂载新的(准备就绪!)主分区。您的命令将类似于:

cryptsetup open --type luks /dev/sdXY home_drive
mount /dev/mapper/home_drive /mnt

将您当前的主文件夹复制到新驱动器,并确保一切正常。

最后,您只需运行以下命令即可让您的系统知道您的加密:

update-initramfs -u -k all

重启系统,确保只需输入一次密码。如果需要输入多次,则表示出现了问题。请仔细检查所有步骤。

一旦您重新上线,请确认/mnt其中含有您的所有家庭数据。


第五部分:真正行动起来

现在,您需要重新打开/etc/fstab并编辑新行,将其替换/mnt/home。它应该如下所示:

/dev/mapper/home_drive    /home    ext4    errors=remount-ro    0    1

保存文件。

再运行update-initramfs -u -k all一次,然后重新启动系统。

备份后,运行lsblk并确保你的主目录已安装到新驱动器。

一旦你满意了,你就需要删除旧的主目录数据。问题是挂载会用它自己替换当前文件夹,所以无法访问该数据(并且你不能在运行时删除主目录)。所以,你需要执行绑定挂载:

mount --bind / /mnt

运行touch /mnt/home/test,然后立即运行cat /home/test并确保它抱怨找不到该文件。如果找到该文件,则说明您的挂载配置有问题。

一旦您确定/home/test不存在但又/mnt/home/test确实存在,您可以继续使用 删除您的旧主页rm -rf /mnt/home/*

您的系统现在将位于您的 SSD 上,并且您的主目录将位于其自己的加密驱动器上!

相关内容