我在带 zfs 的 livecd 上。我想导入一个加密池,它有一个密钥文件作为“密码”
首先我用密钥文件安装USB加密狗
mkdir /tmpusb
mount /dev/disk/by-uuid/uuidofdongle... /tmpusb
然后我导入池
zpool import -l -d /dev/disk/by-partlabel/ROOTPOOL1 -d /dev/disk/by-partlabel/ROOTPOOL2 -o altroot=/mnt rpool
1 / 1 keys successfully loaded
一切正常!问题是什么?
如果我忘记了正确的目录,在哪里安装加密狗?
zfs 给我正确的答案,但必须先打开池!
zfs get all rpool|grep -i kyloc
rpool keylocation file:///tmpusb/cifry local
问题是:有没有办法让这个属性关闭游泳池?
我已经使用 ZFS 十多年了,但从未使用过 ZFS 加密,所以虽然我对 ZFS 了解很多,但我肯定不是 ZFS 加密方面的专家。
AFAIK,如果没有导入池,您将无法获取数据集的 keylocation 属性(因为它是数据集的属性,而不是池 - 可能有一种方法可以使用
zdb
ZFS 调试实用程序来完成,但如果有的话,我不知道)。但是,您可以在导入池之后但在装载数据集之前覆盖该属性,并手动告知
zfs
密钥文件的位置。通过阅读文档,我很确定这就是
-L
选项的zfs load-key
用途。来自man zfs-load-key
:所以,尝试类似的东西:
keylocation
属性zfs load-key
。如果没有这个-l
选项,任何加密的数据集都不会被挂载,这正是你想要的。顺便说一句:请记住称为池
rpool
和该池的顶级数据集(也称为rpool
)之间的区别 -zpool
子命令与池一起使用,zfs
子命令与数据集、zvols、快照等一起使用。