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
稳定?
几个月来,我在各种工作场所的各种扩展坞上亲自使用过这款产品,使用过多个不同品牌的外置硬盘。没有问题。