web-dev-qa-db-ja.com

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

私はNixOSを使用しており、ZFSを使用してハードドライブパーティションを暗号化しようとしています(将来的にはさらに多くなる可能性があります)。 このガイド に固執しようとしたので、追加しました

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

私のconfiguration.nixに、プールとデータセットzrootzroot/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に戻し、/etc/nixos/hardware-configuration.nixからzfsエントリを削除して、システムが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があります。

では、どうすればこれを修正できますか?暗号化されたデータセットをマウントするにはどうすればよいですか?

2
Gecku

このガイド マウントプロセスをうまくまとめています。つまり、暗号化キーのロード/要求を認識しているため、zfs mountではなくmount -t zfsを使用する必要があります。起動時にこれを行うには、-lフラグを使用してzpool importすることもできます(ただし、起動スクリプトにパスワードを指定する方法が必要です)。

0
Dan