web-dev-qa-db-ja.com

systemd:アクセス時にluksデバイスを復号化します

LUKSで暗号化されたパーティションを備えた外付けドライブがあります。デバイスは外部USBデバイスであり、常に必要なわけではないため、必要に応じて復号化して自動マウントするだけです。 x-systemd.automount/etc/fstabを使用して、復号化されたパーティションにファイルシステムを簡単に自動マウントできます。ただし、オンデマンドでパーティションを復号化できません。私は2つの異なるアプローチを試しました:

  1. 行を追加しました

    mnt-usb-crypt UUID=<UUID> /path/to/keyfile luks
    

    /etc/crypttabへ。ただし、/etc/fstabでマウントポイントを指定しなくても、パーティションは常に復号化されます。

  2. /etc/crypttabを変更し、noautoオプションを追加しました。

    mnt-usb-crypt UUID=<UUID> /path/to/keyfile luks,noauto
    

    現在、systemdデバイスはまったくなく、予期されたdev-mapper-mnt-usb.deviceは存在しません。

crypttabのマンページによると、暗号化デバイスにはx-systemd.automountのようなオプションはありません。

アクセスされた場合にのみデバイスを復号化するようにsystemdを構成する可能性はありますか?

4
morxa

質問のオプション2は実際に機能しますが、/etc/crypttab/etc/fstabの両方で暗号化デバイスに同じ名前を使用する必要があります。

/etc/crypttabは次のようになります。

# <name>        <device>            <password>      <options>
mnt-usb-crypt   UUID=<device-uuid>  /path/to/key    luks,noauto

/etc/fstabは次のようになります。

# <file system>             <dir>       <type>  <options>                             <dump>    <pass>
/dev/mapper/mnt-usb-crypt   /mnt/usb    btrfs   defaults,noauto,x-systemd.automount   0         2

パス/dev/mapper/mnt-usb-cryptの代わりに復号化されたファイルシステムのUUIDを使用する場合、systemdは復号化する必要のあるデバイスを判別できないことに注意してください。ただし、上記のようにデバイス名を使用すると、デバイスは自動的に復号化され、期待どおりにマウントされます。

別の解決策は、systemd cryptデバイスの 要件を明示的に指定する です。

3
morxa