如何将加密的 /home 扩展到第二个内部驱动器?

如何将加密的 /home 扩展到第二个内部驱动器?

我有大量照片,出于性能原因,我只想将我的 /Pictures 文件夹移动到计算机中的第二个 SATA 驱动器。我希望一切按现在的方式运行,但 /Pictures 将单独位于第二个驱动器上。

/Home(sda)和第二个驱动器(sdb)是加密。对于主驱动器,我在安装时选择了加密主目录选项。后来,我添加了第二个驱动器。我将其格式化并使用磁盘实用程序选择加密。如果必须一次性完成所有这些操作,我可以重新安装。

到目前为止,我尝试过的方法是从 /Pictures 内部向新驱动器添加符号链接,并使用 PySDM(修改 Fstab)在启动时自动挂载第二个驱动器。由于第二个驱动器已加密,因此此方法无效。在我登录并使用密码解锁钥匙串之前,无法挂载它。

此外,符号链接在文件路径中添加了一个额外的步骤,从而破坏了一些自定义链接。
ln -s /media/Pix /home/tom/Pictures并且所有带有和不带有尾部斜杠的变体都会给我一个 /Pictures 内的链接,或者根本没有链接。(这里可能遗漏了一些简单的东西?)驱动器 2(sdb)是 /Pix,我的所有图片都在其根目录的文件夹中。我想从 Nautilus 中的主文件夹中单击图片,然后直接进入第二个驱动器的根目录。这根本无法实现。我要么在 /Pictures 内获得一个新链接,要么被带到空的 /Pictures 文件夹(在 sda 上)

最好的方法是什么?重要的是保持所有文件加密,并让 /Pictures 像在 /home 中一样工作。我还需要我的自动备份在新位置收集照片。

****编辑** 我尝试按照 RAOF 的答案操作,但现在我卡住了。以下是我所取得的进展:

cryptsetup 已经安装,我对其进行了编辑并准确复制了建议,现在看起来像这样:

# <target name> <source device>     <key file>  <options>
cryptswap1 /dev/sda2 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
sdb_crypt UUID=<redacted>-4ef3-a4ff-7c9db92025d7 none luks  

我显然有一个加密的 /home,那是另一个条目。

ls -lah /dev/disks/by-uuid

根本不起作用,我得到“ls:无法访问/dev/disks/by-uuid:没有这样的文件或目录”

ls -l /dev/disk/by-uuid/

确实有效,这是方法在 Ubuntu 帮助页面 这给了我以下信息:

ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-40ba-be89-9591daf722c9 -> ../../sdd1
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-4ef3-a4ff-7c9db92025d7 -> ../../sdb1
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-49da-bcca-879e44afe63c -> ../../sda1
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-4cee-9ef7-c745ee596438 -> ../../dm-1
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-48ed-9725-5179cd588c28 -> ../../dm-0
lrwxrwxrwx 1 root root 10 2012-02-06 08:15 <redacted>-4bb6-bf6e-197af4d6afdc -> ../../sdc1

现在的问题在于 fstab。我尝试了几种变体,但到目前为止都不起作用。以下是我开始使用的:

UUID=<redacted>-4bb6-bf6e-197af4d6afdc /home ext4 defaults 0 2
UUID=<redacted>-4ef3-a4ff-7c9db92025d7 /media/sdb1 crypto_LUKS noauto 0 0
UUID=<redacted>-49da-bcca-879e44afe63c / ext4 defaults 0 1
UUID=<redacted>-4cee-9ef7-c745ee596438 /media/Pix ext4 noauto 0 0

它会尝试在启动时挂载加密分区,但这还为时过早,因为我还没有输入密码。我删除了最后一行,并将第二项更改为自动,如下所示。

UUID=<redacted>-4bb6-bf6e-197af4d6afdc /home ext4 defaults 0 2
UUID=<redacted>-4ef3-a4ff-7c9db92025d7 /media/sdb1 crypto_LUKS auto 0 0
UUID=<redacted>-49da-bcca-879e44afe63c / ext4 defaults 0 1

在我登录之前,它会要求我输入 GRUB 上的 /sdb_crypt 密码(带有 UUID)。
在此处输入图片描述

我输入了驱动器的密码,但我猜 passphrase=/=password,这失败了。我从实时 CD 恢复了备份 fstab,但现在我不明白如何“编辑 /etc/fstab 以便它在正确的位置安装 /dev/mapper/sdb_crypt。”来自 RAOF 的回答。有什么想法吗?现在我怀疑 fstab 中的条目比我需要的多,应该删除哪些?

答案1

如果您想在启动时设置第二个驱动器,那么您可以使用cryptsetup它作为启动过程的一部分进行安装。这将在启动期间提示输入驱动器的密码。为此,您应该apt-get install cryptsetup(如果尚未安装),然后编辑/etc/crypttab;它应该看起来像这样:

sdb_crypt /dev/sdb none luks

虽然,由于 /dev/sdX由于名称在硬件更改后不一定稳定,因此我会找出驱动器的 UUID 并使用它。您可以/dev通过运行来找到 UUID ls -lah /dev/disks/by-uuid。您将获得包含以下内容的输出:

lrwxrwxrwx 1 root root  10 Feb  2 17:30 deadbeef-baea-9233-1828-ae12b3ed4ff3e -> ../../sdb

然后从中添加以下内容/etc/crypttab

sdb_crypt UUID=deadbeef-baea-9233-1828-ae12b3ed4ff3e none luks

完成后,您可以进行编辑/etc/fstab以便将其安装/dev/mapper/sdb_crypt在正确的位置。

设置完成后,我只需将符号链接~/Pictures到您挂载的位置sdb_crypt即可。无需在现有图片目录中放置符号链接。您需要将所有现有文件移动到加密目录中,删除现有图片目录,然后ln -s /where/you/mounted/sdb_crypt ~/Pictures创建符号链接。

这之所以困难,是因为整个事情基本上是一个缺失的功能。你真正想要做的是告诉桌面它应该在您登录时自动挂载您的驱动器 - 这意味着您可以轻松地对任何支持 gvfs 的挂载执行同样的事情:SMB、ssh 等。我想补丁会受到欢迎☺。

答案2

您是否尝试过将Pictures目录转换为指向新位置的符号链接?这样可以省去文件路径中的额外步骤,所有内容都保持不变。

此外,无论是否加密,我都不明白为什么第二个驱动器必须在启动时安装。在登录时安装它不是就足够了吗?要实现这一点,必须遵循与安装主驱动器相同的程序。符号链接将~/Pictures在安装完成之前失效,但这只是(假设安装过程正确实施)在登录期间、安装后~和安装第二个驱动器之前。你认为这是一个问题吗?

ecryptfs PAM 文档可能包含一些相关的指针。

相关内容