VeraCrypt 可以在 Linux 上使用持久挂载点吗?

VeraCrypt 可以在 Linux 上使用持久挂载点吗?

VeraCrypt 可以在 Linux 上使用持久挂载点吗?


Windows + VeraCrypt + 加密卷绝对路径

在 Windows 上我可以挂载 veracrypt 加密的分区/磁盘通过批处理脚本设备名称显示mountvol.exe。这样的属性非常有用,因为重新启动可能导致相对路径的改变(\Device\Harddisk1\Partition3-->重新启动--> \Device\Harddisk3\Partition3)。

我在 Windows 上为 veracrypt 卷编写的批处理脚本(缩写形式):

@echo
"C:\Program Files\VeraCrypt\VeraCrypt.exe" /v \\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\ /l z /m label=Encrypted_1 /q
"C:\Program Files\VeraCrypt\VeraCrypt.exe" /v \\?\Volume{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}\ /l f /m label=Encrypted_2 /q
[...]
pause


Linux + VeraCrypt + 仅加密卷相对路径?

我不知道是否存在/v \\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\可用于 Linux 命令行的与 Windows 并行的命令。我尝试(徒劳地)--mount=/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx标记,因为mountvol.exe 卷名(可能)基于 UUID 编号(blkid虽然 无法察觉)。官方 veracrypt/truecrypt 文档允许 Linux 用户仅使用相对(可变)路径(/dev/sda3--> 重启 --> /dev/sdc3)进行操作。由于不稳定,每次加载操作系统后都必须验证路径。

我在 Linux 上安装 veracrypt 卷的 bash 脚本(缩写形式):

#! /bin/bash
#
echo "Encrypted_1" && veracrypt --mount /dev/sdq --slot=12 --verbose && echo "Encrypted_1"
echo "Encrypted_2" && veracrypt --mount /dev/sdz3 --slot=1 --verbose && echo "Encrypted_2"
[...]


解决方案?

是否有人知道在 Linux 上是否可以用绝对术语描述 VeraCrypt 卷位置?

如果不可能,请提供实现相同目标的建议?(例如:udev??fstab

勘误表

mountvol.exe识别GUID,并非UUID如上所写。

答案1

我已详细说明以下由大卫·福斯特并使其对其他对该主题感兴趣的 Linux 用户更具描述性和清晰度。

Linux + VeraCrypt + 加密卷绝对路径

根据我的研究,似乎无法为 VeraCrypt 卷分配绝对路径(至少目前不可能)(韦迪by-id 和 by-path进入wiki.archlinux.org在下面持久块设备命名1))。

Linux + VeraCrypt + 半持久块设备命名

但是,我们可以使用半持久性块设备命名。

旁路

/dev/disk/by-path/取决于最短物理路径(2)并随着控制器端口的切换而变化(3)。

要获取/dev/disk/by-path/描述符,请输入:

ls -l /dev/disk/by-path/

您可以使用获取的命名来挂载 VeraCrypt 卷:

veracrypt --mount /dev/disk/by-path/[by-path] --slot=6 --verbose

/dev/disk/by-path/[by-path]可以在 bash 脚本中替换相对路径:

#! /bin/bash
#
echo "Encrypted_1" && veracrypt --mount /dev/disk/by-path/[by-path1] --slot=12 --verbose && echo "Encrypted_1"
echo "Encrypted_2" && veracrypt --mount /dev/disk/by-path/[by-path2] --slot=1 --verbose && echo "Encrypted_2"
[...]

2. 按 ID

/dev/disk/by-id/根据设备序列号创建(4)。wiki.archlinux.org无法/dev/disk/by-id/经受硬件变化的状态,即设备插入到控制器端口时,受到不同子系统的影响(5)。access.redhat.com另一方面,/dev/disk/by-id/即使设备被不同的系统访问,声明仍可维持(6),因此,在实际应用symlink中显得相当稳定。/dev/disk/by-id/

要获取/dev/disk/by-id/设备命名,请输入:

ls -l /dev/disk/by-id/

现在,当您有正确的卷时,它可以用于挂载 VeraCrypt 卷:

veracrypt --mount /dev/disk/by-id/[id] --slot=6 --verbose

类似于第一段中提到的内容,/dev/disk/by-id/可以在 bash 脚本中使用:

#! /bin/bash
#
echo "Encrypted_1" && veracrypt --mount /dev/disk/by-id/[id1] --slot=12 --verbose && echo "Encrypted_1"
echo "Encrypted_2" && veracrypt --mount /dev/disk/by-id/[id2] --slot=1 --verbose && echo "Encrypted_2"

也许它对某些人有帮助。

附录

/dev/disk/by-id/不够稳定,重启后会忘记更正安装脚本。

答案2

不幸的是,由于加密,加密容器内的文件系统的 UUID 和标签无法访问,并且 TrueCrypt/VeraCrypt 容器本身不携带 UUID 或标签(或者至少 udev 不知道,与 LUKS 容器不同)。

Linux 中还有另一个足够稳定的存储卷标识符:磁盘 ID。 你可以在...里找到它们:

/dev/disk/by-id/

到目前为止,我从未注意到其中的符号链接有任何重大变化,因为名称是由

  • udev 的基本存储配置不经常改变,
  • 根据驱动器固件报告的制造商名称、型号名称和序列号,这些也不会经常改变。

答案3

在连接驱动器之前,请先拍摄“快照”

$> ll /dev/disk/by-id > ~/before.txt

再次,连接驱动器后。并查看差异:

$> ll /dev/disk/by-id > ~/after.txt
$> diff ~/before.txt ~/after.txt

您应该看到(即在双分区三星外部驱动器上)

> [...] usb-Samsung_M2_Portable_D3F12345678FE094-0:0 -> ../../sdd
> [...] usb-Samsung_M2_Portable_D3F12345678FE094-0:0-part1 -> ../../sdd1
> [...] usb-Samsung_M2_Portable_D3F12345678FE094-0:0-part2 -> ../../sdd2

要挂载,请将其中的分区2说成/mnt/m(我的示例:使用 truecrypt 开关)

veracrypt -t -tc -pPasswordIfYouLike -k "" --protect-hidden=no /dev/disk/by-id/usb-Samsung_M2_Portable_D3F12345678FE094-0:0-part2 /mnt/m

现在,您可以可靠地使用此驱动器的相应挂载脚本,无论它连接到哪个 USB 端口,或按照与其他驱动器相应的顺序连接。


对于正确、可靠的卸载脚本:

veracrypt -t -d /dev/disk/by-id/usb-Samsung_M2_Portable_D3F12345678FE094-0:0-part2


稳定?

几个月来,我在各种工作场所的各种扩展坞上亲自使用过这款产品,使用过多个不同品牌的外置硬盘。没有问题。

相关内容