Ich verwende NixOS und versuche, eine Festplattenpartition (in Zukunft möglicherweise auch mehr) mit ZFS zu verschlüsseln. Ich habe versucht,dieser Leitfaden, also fügte ich hinzu
boot.zfs = {
enableUnstable = true;
requestEncryptionCredentials = true;
};
boot.supportedFilesystems = [ "zfs" ];
zu meinem configuration.nix
, und erstellte den Pool und den Datensatz zroot
und zroot/genc
mit mountpoint=legacy acltype=posixacl xattr=sa
. Ich verschlüsselte den Pool mit
$ sudo zfs create -o acltype=posixacl -o xattr=sa -o encryption=aes-256-gcm -o keyformat=passphrase -o mountpoint=none zroot/genc
Ich wurde nach einer Passphrase gefragt und dann habe ich
$ 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
Das hat alles gut funktioniert (ich konnte die Datei erstellen ~/genc/hello
). Nach nixos-rebuild switch
wurde ich jedoch in eine Notfall-Shell geworfen und konnte nichts tun. Ich kehrte zu einer früheren Version von NixOS zurück und entfernte die zfs
Einträge aus /etc/nixos/hardware-configuration.nix
, damit das System nicht versuchte, die ZFS-Pools zu importieren (weil dies anscheinend fehlschlug). Mit dieser neuen Konfiguration habe ich
$ sudo zfs import zroot
$ sudo mount -t zfs zroot/genc ~/genc
> filesystem 'zroot/genc' can not be mounted: Permission denied
Ich bin nicht an den Punkt gekommen, an dem ich nach meiner Passphrase gefragt wurde. zroot/genc
hat die Attribute canmount=on keylocation=prompt
.
Wie kann ich das also beheben? Wie kann ich den verschlüsselten Datensatz mounten?
Antwort1
Dieser Leitfadenfasst den Mount-Prozess gut zusammen. Kurz gesagt, Sie sollten wahrscheinlich zfs mount
anstelle von verwenden mount -t zfs
, da es dann weiß, dass es Verschlüsselungsschlüssel laden/anfordern muss. Um dies beim Booten zu tun, können Sie auch das -l
Flag to verwenden zpool import
(obwohl Sie Ihr Boot-Skript irgendwie mit dem Passwort versorgen müssen).