在 Ubuntu 21.04 中加密主目录的推荐方法是什么?

use*_*950 7 encryption ecryptfs home-directory

将 Ubuntu 安装到新笔记本上时,我很惊讶地发现不再提供加密主目录的选项。

我发现一些模糊的信息表明 Ubuntu 不久前放弃了 ecryptfs 支持,转而使用 LUKS 进行完整的磁盘加密。对于我的用例来说,不希望对整个设备进行加密,因为我的目的只是保护数据免遭未经授权的访问,以防机器丢失或被盗。不涉及超级敏感数据,也不存在敌对政府机构(据我所知),而且我无法承担额外的密码对话框。

所以我的问题很简单:在 Ubuntu 21.04 中加密主目录的推荐方法是什么?

我是否出于某种原因不鼓励使用 ecryptfs?

我可以安全地使用下面描述的旧方法吗?

首先安装 ecryptfs-utils 和 rsync 包:

sudo apt install ecryptfs-utils rsync lsof
Run Code Online (Sandbox Code Playgroud)

然后加载ecryptfs内核模块:

sudo modprobe ecryptfs
Run Code Online (Sandbox Code Playgroud)

您要加密其主目录的用户不得登录。例如,您可以在 tty 中以 root 身份登录。

然后以 root 身份运行:

ecryptfs-migrate-home -u <username>
Run Code Online (Sandbox Code Playgroud)

小智 7

如今在 Ubuntu/Linux 上推荐的加密方式确实是 LUKS,无论是对于单独的容器还是整个​​分区。

我正在做你想做的事情,加密并安装一个单独的分区作为我的/home/username$HOME/home/$USER)驱动器。以下是所涉及的步骤。

警告:这样做会破坏您使用的分区上的所有数据!

  1. 创建加密分区:

    sudo cryptsetup luksFormat /dev/sdXX
    
    Run Code Online (Sandbox Code Playgroud)

    将 sdXX 替换为要加密的分区的实际设备号。出现提示时选择您的密码。这将在分区的开头创建 LUKS 标头,仅此而已。您可以通过执行以下操作来验证 LUKS 是否已正确格式化标头

    sudo cryptsetup luksDump /dev/sdXX
    
    Run Code Online (Sandbox Code Playgroud)
  2. 映射加密容器:

    您可以替换c1为您想要的任何名称:

    sudo cryptsetup luksOpen /dev/sdXX c1
    
    Run Code Online (Sandbox Code Playgroud)

    可选:擦除分区:

    sudo cat /dev/zero > /dev/mapper/c1
    
    Run Code Online (Sandbox Code Playgroud)

    将使用随机数据擦除分区,确保之前可能存在的任何内容都无法重建。可能还要等一下。

  3. 在映射的容器中创建文件系统:

    这里我使用ext4:

    sudo mkfs.ext4 /dev/mapper/c1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 更新您的 /etc/crypttab 文件:

    你的 crypttab 应该包含这样一行

    cryptHome     UUID=12345678-abcd-1234-5678-1234567890ab    none    luks,timeout=30
    
    Run Code Online (Sandbox Code Playgroud)

    与您上面刚刚加密的设备(即设备)的UUID /dev/sdXXlsblk -f您可以使用例如(在输出中的 FSTYPE 下应该显示“crypto_LUKS”)找到它。

  5. 更新您的 /etc/fstab 文件:

    最后,您的 fstab 应该包含类似以下的行

    /dev/mapper/cryptHome         /home/username    ext4   defaults    0    2
    
    Run Code Online (Sandbox Code Playgroud)

    将解密的分区安装到您的文件系统中。映射名称 (cryptHome) 必须与您在 crypttab 中定义的名称匹配。替换username为实际用户的名称。

    您也可以将其安装在 /home 下,但随后您将在一个加密驱动器中拥有所有用户的主目录 - 这意味着所有人都需要知道分区的密码才能在启动时打开它。

最后的评论

通过这些步骤,每次启动时,在用户登录屏幕之前,Ubuntu 都会要求您解锁分区。

将系统设置为默认/home/username目录,然后在其上挂载加密分区是没有问题的。要迁移现有主目录,请/dev/mapper/c1在步骤 3 之后将映射驱动器(在本示例中)临时安装到某个位置,并在重新启动之前复制数据。

如果您想了解有关 LUKS 工作原理的更多信息,这是一个极好的资源。