暗号化された ZFS データセットのマウントに失敗しました: アクセス権が拒否されました

暗号化された ZFS データセットのマウントに失敗しました: アクセス権が拒否されました

私はNixOSを使っていて、ZFSを使ってハードドライブのパーティション(将来的にはもっと多くのパーティション)を暗号化しようとしています。このガイドなので、

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

を私の に作成し、でconfiguration.nixプールとデータセットを作成しましたzroot。でプールを暗号化しました。zroot/gencmountpoint=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緊急シェルに落ちてしまい、何もできませんでした。NixOSの以前のバージョンに戻して、システムがZFSプールをインポートしないようzfsにエントリを削除しました/etc/nixos/hardware-configuration.nix(どうやらその時点で失敗したようです)。この新しい構成では、

$ 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

関連情報