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

Chr*_*nus 12 encryption bash mount paths veracrypt

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


Windows + VeraCrypt + 加密卷绝对路径

在Windows我可以装入veracrypt加密的分区/磁盘通过批处理脚本,其采用的设备名称显示通过mountvol.exe。这样的属性非常有用,因为重启会导致相对路径的改变(\Device\Harddisk1\Partition3--> reboot --> \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
Run Code Online (Sandbox Code Playgroud)


仅 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--> reboot --> /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"
[...]
Run Code Online (Sandbox Code Playgroud)


解决方案?

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

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

勘误表

mountvol.exe识别GUID,而不是UUID上面写的。

Chr*_*nus 7

我在下面详细阐述了David Foerster发布的答案,并使其对所提出的主题感兴趣的其他 Linux 用户更具描述性和清晰性。

Linux + VeraCrypt + 加密卷绝对路径

根据我的研究,似乎对VeraCrypt卷的绝对路径的任务是不可能的(至少目前)(参见由-ID,并通过路径上进入wiki.archlinux.org持久块设备命名1))。

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

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

1. 旁道

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

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

ls -l /dev/disk/by-path/
Run Code Online (Sandbox Code Playgroud)

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

veracrypt --mount /dev/disk/by-path/[by-path] --slot=6 --verbose
Run Code Online (Sandbox Code Playgroud)

/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"
[...]
Run Code Online (Sandbox Code Playgroud)

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/
Run Code Online (Sandbox Code Playgroud)

现在,当你有正确的时候,它可以用来挂载 VeraCrypt 卷:

veracrypt --mount /dev/disk/by-id/[id] --slot=6 --verbose
Run Code Online (Sandbox Code Playgroud)

类似于第一段中提到的,/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"
Run Code Online (Sandbox Code Playgroud)

也许这对某人有帮助。

附录

/dev/disk/by-id/ 不够稳定,无法在重新启动后忘记更正安装脚本。


Dav*_*ter 3

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

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

/dev/disk/by-id/
Run Code Online (Sandbox Code Playgroud)

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

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