Udev

自動掛載加密的外置硬碟

  • March 2, 2021

我已經使用 cryptsetup 和密鑰文件加密了我的外部硬碟驅動器。我現在的目標是自動解密並將它們安裝在外掛上。我曾經使用此部落格文章(不幸的是德語)這樣做。這曾經在我的舊 Ubuntu 16.04 機器上工作,但自從我升級到 Focal 後,這不再工作了。我具體做的是:

  1. 添加/dev/mapper/extdrive /mnt/extdrive xfs defaults,noauto 0 2/etc/fstab.
  2. 添加ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", ATTRS{serial}=="123456789", RUN+="/sbin/cryptsetup --key-file /root/.kf luksOpen $env{DEVNAME} extdrive"/etc/udev/rules.d/85-extdrive.rules
  3. 添加ACTION=="add|change", SUBSYSTEM=="block", ENV{DM_NAME}=="extdrive", RUN+="/bin/mount /dev/mapper/$env{DM_NAME}"/etc/udev/rules.d/85-extdrive.rules

似乎驅動器是通過 luksOpen 打開但未安裝,即“添加|更改”規則不會觸發。如何找出自動掛載失敗的原因?如果我手動執行相應的命令,一切似乎都很好。獎勵:為什麼這種方法曾經在 16.04 中有效,但在 20.04 中不再有效?

謝謝!

mount在 UDev 規則中不起作用,因為 UDev 使用自己的掛載命名空間執行。您需要改為使用systemd-mount,有關詳細資訊,請參閱此 arch wiki 文章

從 udev 手冊頁:

請注意,由於在 systemd-udevd.service 上實施了預設沙箱,因此在 udev 規則中不允許執行訪問網路或掛載/解除安裝文件系統的程序。

這是相對較新的變化(我認為大約是 3 年前),所以我想這在 16.04 中還沒有出現。

引用自:https://unix.stackexchange.com/questions/637170