Linuxでシステムに暗号化デバイスを自動的にマウントさせる方法

Linuxでシステムに暗号化デバイスを自動的にマウントさせる方法

外部ストレージを接続すると、暗号化されたデバイスに自動的にマウントする必要があります。

どうすればいいですか?

答え1

問題は、システムが自動的に暗号化デバイスをインストールするには、そのデバイスのキーを同じシステムのどこかに保存する必要があることです。その結果、システムが盗まれた場合、キーが損傷する可能性があります。これがあなたに当てはまる場合は、読んでください。

udevLinux用のプラグアンドプレイマネージャです。ハードウェアが接続(切断)されるたびに、udevハードウェアをディレクトリのどこかにudev配置するか、残りのLinux識別子にアクセスできるようにする必要があるすべての作業を実行します。動作の詳細/devを見ると、USB大容量記憶装置が接続されているときにスクリプトを実行できることがわかります。udev

デフォルトでは/etc/udev/rules.dに移動する必要があります。ここにあるすべてのファイルは(再)起動時に解析され、udevこれらのファイルは特定のデバイスが接続されたときにスクリプトをトリガーするために使用できます。ここに表示される内容は変更せず、z60_usbmount.rules次の内容を追加しました。

KERNEL=="sd*", BUS=="usb", ACTION=="add", RUN+="/etc/local/usbmountcheck udev add $kernel $parent"

KERNEL=="sd*", ACTION=="remove", RUN+="/etc/local/usbmountcheck udev remove $kernel $parent"

したがって、外部ドライブがUSB経由で接続されると、usbmountcheckスクリプトが実行され、udevデバイスに関するすべての情報が削除されます。

ドライブを一意に識別し、などの名前をusbmountcheck識別しようとするため、スクリプトは少し複雑です。これを行うためにスクリプトに含めたロジックは次のとおりです。sdasdb$kernel

ACTION=$2
KVOL=$3
KVROOT=$4
# correlate volume name in /dev/disk/by-id with $KVOL, if we can
VNAME="`/bin/ls -l /dev/disk/by-id | /bin/grep $KVOL | /usr/bin/tr -s [[:space:]] ' ' | /usr/bin/cut -f 9 -d ' '`"
if [ "$?" != 0 ]; then
 die "error in pipeline that tries to get volume name, return code $?"
 fi

この時点で、$VNAMEUSBで認識されるデバイス名があります。その後、既知の暗号化ボリュームであるかどうかをテストし、マウントするための適切なコマンドをスクリプトできます。また、切断後に自動的にクリーンアップされるようにマウント解除ハンドラをスクリプトする必要があります。

udevスクリプトを書くには多くのリスクがあります。失敗すると、udevが機能しなくなり、追加のハードウェア変更を識別できない可能性があるためです。気をつけて進めてください。

関連情報