在将 Ubuntu 安装到新的笔记本电脑上时,我很惊讶地发现不再提供加密主目录的选项。
我发现一些模糊的信息,Ubuntu 不久前放弃了对 ecryptfs 的支持,转而使用 LUKS 进行完整的磁盘加密。对于我的用例来说,加密整个设备是不可取的,因为我的目标只是在机器丢失或被盗时保护数据免受未经授权的访问。不涉及任何超级敏感数据,也没有敌对的政府机构(据我所知),我承受不起额外的密码对话框。
所以我的问题很简单:在 Ubuntu 21.04 中加密主目录的推荐方法是什么?
我是否因为某种原因不愿意使用 ecryptfs?
我可以安全地使用下面描述的旧方法吗?
首先安装 ecryptfs-utils 和 rsync 包:
sudo apt install ecryptfs-utils rsync lsof
然后加载ecryptfs内核模块:
sudo modprobe ecryptfs
您要加密其主目录的用户不得登录。例如,您可以在 tty 中以 root 身份登录。
然后以 root 身份运行:
ecryptfs-migrate-home -u <username>
答案1
目前在 Ubuntu/Linux 上推荐的加密方式确实是 LUKS,无论是针对单独的容器还是整个分区。
我正在做你想做的事情,加密并安装一个单独的分区作为我的/home/username
( $HOME
, /home/$USER
) 驱动器。下面是所涉及的步骤。
警告:这样做会破坏您使用的分区上的所有数据!
创建加密分区:
sudo cryptsetup luksFormat /dev/sdXX
其中,将 sdXX 替换为要加密分区的实际设备号。出现提示时选择密码。这将在分区开头创建 LUKS 标头,没有其他内容。您可以通过执行以下操作来验证标头是否已被 LUKS 正确格式化
sudo cryptsetup luksDump /dev/sdXX
映射加密容器:
您可以
c1
用您想要的任何名称进行替换:sudo cryptsetup luksOpen /dev/sdXX c1
选修的:擦除分区:
sudo cat /dev/zero > /dev/mapper/c1
将使用随机数据擦除分区,确保之前可能存在的任何内容都无法重建。这可能需要一段时间。
在映射容器中创建文件系统:
这里我使用ext4:
sudo mkfs.ext4 /dev/mapper/c1
更新你的 /etc/crypttab 文件:
你的 crypttab 应该包含如下行
cryptHome UUID=12345678-abcd-1234-5678-1234567890ab none luks,timeout=30
使用您刚刚加密的设备(即设备)的 UUID
/dev/sdXX
。您可以使用例如找到它lsblk -f
(输出中的 FSTYPE 下应该显示“crypto_LUKS”)。更新 /etc/fstab 文件:
最后,你的 fstab 应该包含如下行
/dev/mapper/cryptHome /home/username ext4 defaults 0 2
将解密的分区挂载到文件系统中。映射的名称 (cryptHome) 必须与您在 crypttab 中定义的名称相匹配。
username
用实际用户的名称替换。您也可以将其安装在 /home 下,但这样一来,所有用户的主目录都会放在一个加密驱动器中 - 这意味着所有用户都需要知道该分区的密码才能在启动时打开它。
结束语
通过这些步骤,Ubuntu 将在每次启动时(在用户登录屏幕之前)要求您解锁分区。
使用默认目录设置系统/home/username
,然后在其上安装加密分区,这没有问题。要迁移现有的主目录,请/dev/mapper/c1
在步骤 3 之后将映射驱动器(在此示例中)安装到临时位置,然后在重新启动之前复制数据。
这如果您想了解更多有关 LUKS 的工作原理,是一个很好的资源。
答案2
在从 USB 记忆棒安装的过程中,您可以选择是否要安装在整个硬盘上,您可以选择“其他”选项,在其中选择要使用的分区。
在分区对话框中,您必须创建一个 800MB 的小分区,
/boot
该分区必须格式化为 ext2然后创建另一个类型为“用于加密的物理卷”的分区。
确保您有另一个 USB 记忆棒或类似设备,您可以在安装过程中将加密恢复密钥存储在其中。
在加密容器内,您可以为整个系统创建一个根分区
/
。
(我不确定如何在那里创建交换分区以及推荐的方法,因为没有在加密容器内创建新分区的选项)