在 ext4 分区上加密到 LUKS

tom*_*ozb 3 encryption dropbox ecryptfs luks

我的主目录使用 Ecrypfts (AFAIK) 加密。我正在使用在后台运行的 Dropbox 服务将本地文件与云同步。从 18 年 11 月开始,dropbox 将仅支持使用 LUKS 加密的 ext4 分区。

我想从 Ecrypfts 切换到 LUKS。这是 blkid 的输出。

 /dev/nvme0n1p6: UUID="b49f5039-2524-4e7a-ba28-96f935367c7e" TYPE="ext4" PARTUUID="9124511d-c89a-4944-b346-c1f30a98801d"
 /dev/nvme0n1p7: UUID="e26b7783-5a36-4855-8a30-56bb21e4d310" TYPE="swap" PARTUUID="25ab9b40-5886-4a0a-b631-fced0caa0869"
 /dev/mapper/cryptswap1: UUID="f442df5d-5420-48f5-966a-d3d264ab9bfa" TYPE="swap"
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何关于如何做到这一点的文章。有没有安全的方法在这两种加密类型之间切换?

编辑:

/etc/crypttab

cryptswap1 UUID=e26b7783-5a36-4855-8a30-56bb21e4d310 /dev/urandom swap,offset=1024,cipher=aes-xts-plain64
Run Code Online (Sandbox Code Playgroud)

ls -l /dev/mapper

crw------- 1 root root 10, 236 Aug 26 11:18 control
lrwxrwxrwx 1 root root       7 Aug 26 11:18 cryptswap1 -> ../dm-0
Run Code Online (Sandbox Code Playgroud)

use*_*186 6

查找您是否有 eCryptfs

Ctrl+ Alt+打开终端T并输入:

df --type=ecryptfs
Run Code Online (Sandbox Code Playgroud)

如果您看到如下输出:

Filesystem                     1K-blocks Used      Available  Use%   Mounted on
/home/.ecryptfs/$USER/.Private 415321024 214784192 179416628   55%   /home/$USER
Run Code Online (Sandbox Code Playgroud)

然后您的主文件夹由 eCryptfs 加密。

背景

LUKS 加密和 eCryptfs 的工作方式不同。

首先,eCryptfs 加密/home/$USER文件夹,LUKS 在分区级别工作。

其次,加密/home/$USER文件夹在 $USER 登录时解锁。LUKS 分区加密会在您每次启动计算机时要求输入密码。一旦/home分区解锁,您就可以像往常一样使用登录密码登录您的帐户。也就是说,您将需要使用两个密码。如果您的计算机有其他用户,他们的“主”文件夹也将被加密。因此,如果计算机的所有用户需要打开计算机并在您不在时使用它,他们都必须知道 LUKS 密码。有一种方法可以将密码保存在文件中,并让 LUKS 在启动时自动解锁分区,但这并不安全。

第三,您的计算机只有一个分区/(加上交换分区),大多数 Ubuntu 安装都是如此。LUKS 没有简单的方法来加密 Ubuntu 的这个单一分区安装。如果您想保留单个分区设置,您可能需要备份数据并重新安装 Ubuntu。安装时,选择全盘加密选项。

最后,备份!备份!!备份!!!下面描述的步骤非常危险。您可能会丢失所有数据,或者您的 Ubuntu 安装将无法启动。

第一步:新建一个分区 /home

步骤 1.1:从 Live CD/USB 启动

使用 try Ubuntu without install 选项。

步骤 1.2:识别磁盘

打开 Gparted。我更喜欢 Gparted,因为它是可视化的,让我“看到”驱动器和分区。单击右上角的下拉菜单并查看驱动器列表。浏览列表并根据大小和分区结构确定要使用的驱动器。您想确定/要缩小的内部硬盘驱动器中的分区。

在此处输入图片说明

步骤 1.3:收缩

确保您选择了内部磁盘。

选择/要缩小的分区。

向左拖动分区的右边缘以调整大小/移动以为新/home分区腾出空间。创建您希望新/home分区尽可能多的空间。

按 Gparted 中的“应用”按钮并等待。

如果一切顺利,进入下一步。如果出现错误,请停止!

在此处输入图片说明

步骤 1.4 创建新分区

右键单击您创建的未分配空间并选择新建。您将看到“创建新分区”窗口。确保文件系统显示“ext4”,其余部分保持原样。

在此处输入图片说明

按 Gparted 中的“应用”按钮并等待。

如果一切顺利,进入下一步。如果出现错误,请停止!

步骤 1.5 重启电脑到内置硬盘

第 2 步:加密新分区

Step 2.1 查找新分区的标识信息

Ctrl+ Alt+打开终端T并输入:

sudo blkid
Run Code Online (Sandbox Code Playgroud)

系统将提示您输入密码。当您输入密码时,终端上不会显示任何内容。这是正常的。

将输出复制并粘贴到文本文件中。请注意 UUID 以及分区名称,例如/dev/nvme0pX,其中 X 是新分区的编号。

步骤 2.2 LUKS 加密!

sudo cryptsetup -h sha256 -c aes-xts-plain64 -s 512 luksFormat /dev/nvme0pX
Run Code Online (Sandbox Code Playgroud)

系统将提示您输入密码。这是每次启动计算机以解锁/home分区时都需要的密码。不要将其留空。

接下来的两个命令打开加密分区并对其进行格式化以使其为数据存储做好准备。

sudo cryptsetup luksOpen /dev/nvme0pX home
sudo mkfs.ext4 -m 0 /dev/mapper/home
Run Code Online (Sandbox Code Playgroud)

步骤 3 临时挂载和复制 /home

创建一个新文件夹,使其成为加密分区的临时挂载点

sudo mkdir /newhome
Run Code Online (Sandbox Code Playgroud)

将加密分区挂载到 newhome

sudo mount /dev/mapper/home /newhome
Run Code Online (Sandbox Code Playgroud)

确保您的“主”文件夹可以访问。如果您有多个用户,每个用户都有加密的主文件夹,请确保“主”文件夹可访问。

将原来的家复制到新家

sudo cp -a /home/* /newhome
Run Code Online (Sandbox Code Playgroud)

确保您的所有文件都复制到新家并且您可以看到它们。

删除新家中复制的旧加密系统的位

sudo rm -rf /newhome/username/Private /newhome/username/.ecryptfs
Run Code Online (Sandbox Code Playgroud)

username你的用户名在哪里。如果您在这台计算机上有多个用户使用加密的“主”文件夹,则必须为所有用户执行此操作。

第 4 步:将您的新家设置为家

编辑文件 /etc/crypttab

sudo nano /etc/crypttab
Run Code Online (Sandbox Code Playgroud)

添加以下行,确保 UUID 对应于 /dev/nvme0pX:

home UUID=AAA-BBB-CCC-DDDD-EEEEEEEE none luks,timeout=30
Run Code Online (Sandbox Code Playgroud)

Ctrl+ 然后XYEnter保存并退出 nano。

/etc/fstab用纳米编辑

sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)

并添加以下行:

/dev/mapper/home  /home ext4 nodev,nosuid,noatime        0       2
Run Code Online (Sandbox Code Playgroud)

Ctrl+ 然后XYEnter保存并退出 nano。

不要重新启动计算机!

第五步:删除旧的加密家庭和旧的加密程序

sudo rm -rf /home/*
sudo apt remove ecryptfs-utils libecryptfs1
Run Code Online (Sandbox Code Playgroud)

请注意,旧的 /home 文件夹应保留且为空,因为它将用作加密分区的挂载点。

第 6 步:重新启动

在您登录之前,系统将提示您输入主分区密码。

希望这可以帮助