systemd:在访问时解密 luks 设备

mor*_*rxa 5 encryption mount luks systemd

我有一个带有 LUKS 加密分区的外部驱动器。由于该设备是外部 USB 设备,我并不总是需要它,我只想按需解密和自动挂载。我可以轻松地使用x-systemd.automountin将文件系统自动挂载到解密分区上/etc/fstab。但是,我无法按需解密分区。我尝试了两种不同的方法:

  1. 我添加了该行

    mnt-usb-crypt UUID=<UUID> /path/to/keyfile luks
    
    Run Code Online (Sandbox Code Playgroud)

    /etc/crypttab。但是,现在分区总是被解密,即使我没有在/etc/fstab.

  2. 我更改/etc/crypttab并添加了noauto选项:

    mnt-usb-crypt UUID=<UUID> /path/to/keyfile luks,noauto
    
    Run Code Online (Sandbox Code Playgroud)

    现在,根本没有 systemd 设备,预期dev-mapper-mnt-usb.device不存在。

根据 的联机帮助页crypttab,没有像x-systemd.automountcrypt 设备这样的选项。

是否有可能将 systemd 配置为仅在访问设备时对其进行解密?

mor*_*rxa 4

问题中的选项 2 实际上有效,但是您必须在 和 中对 crypt 设备使用相同的/etc/crypttab名称/etc/fstab

/etc/crypttab看起来如下:

# <name>        <device>            <password>      <options>
mnt-usb-crypt   UUID=<device-uuid>  /path/to/key    luks,noauto
Run Code Online (Sandbox Code Playgroud)

/etc/fstab看起来如下:

# <file system>             <dir>       <type>  <options>                             <dump>    <pass>
/dev/mapper/mnt-usb-crypt   /mnt/usb    btrfs   defaults,noauto,x-systemd.automount   0         2
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用解密文件系统的 UUID 而不是 path /dev/mapper/mnt-usb-crypt,则 systemd 无法确定它必须解密的设备。但是,如果您使用上面的设备名称,设备会按预期自动解密并安装。

另一种解决方案是明确指定systemd crypt 设备的要求。