加密的 ZFS 数据集无法挂载:权限被拒绝

加密的 ZFS 数据集无法挂载:权限被拒绝

我在 NixOS 上尝试使用 ZFS 加密硬盘分区(将来可能会更多)。我尝试坚持本指南,所以我补充说

boot.zfs = {
  enableUnstable = true;
  requestEncryptionCredentials = true;
};
boot.supportedFilesystems = [ "zfs" ];

到我的configuration.nix,并创建了池和数据集zroot,并zroot/genc使用mountpoint=legacy acltype=posixacl xattr=sa。我使用加密了池

$ sudo zfs create -o acltype=posixacl -o xattr=sa -o encryption=aes-256-gcm -o keyformat=passphrase -o mountpoint=none zroot/genc

我被要求输入密码,然后我就输入了

$ sudo zfs set mountpoint=legacy zroot/genc
$ sudo mount -t zfs zroot/genc /home/gecku/genc
$ sudo chown gecku:users ~/genc
$ touch ~/genc/hello
$ sudo nixos-generate-config

这一切都运行良好(我可以创建文件~/genc/hello)。但是,之后nixos-rebuild switch,我被置于紧急 shell 中,无法执行任何操作。我恢复到以前的 NixOS 版本,并删除了条目,zfs以便/etc/nixos/hardware-configuration.nix系统不会尝试导入 ZFS 池(因为显然它失败了)。有了这个新配置,我做到了

$ sudo zfs import zroot
$ sudo mount -t zfs zroot/genc ~/genc
> filesystem 'zroot/genc' can not be mounted: Permission denied

我没有到达要求我输入密码的地方。zroot/genc具有属性canmount=on keylocation=prompt

那么,我该如何解决这个问题?我该如何挂载加密数据集?

答案1

本指南很好地总结了挂载过程。简而言之,您可能应该使用zfs mount而不是,mount -t zfs因为它会知道加载/请求加密密钥。要在启动时执行此操作,您还可以使用标志-lzpool import尽管您需要某种方式向您的启动脚本提供密码)。

相关内容