加密的 ZFS 資料集無法掛載:權限被拒絕

加密的 ZFS 資料集無法掛載:權限被拒絕

我在 NixOS 上嘗試使用 ZFS 加密硬碟分割區(將來可能會更多)。我試著堅持本指南,所以我添加了

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

到我的configuration.nix,並創建了池和數據集zrootzroot/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我就被丟進了緊急外殼,什麼都做不了。我恢復到 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因為它會知道加載/請求加密金鑰。要在啟動時執行此操作,您還可以使用該-l標誌zpool import(儘管您需要某種方法來為啟動腳本提供密碼)。

相關內容