外部ストレージを接続すると、暗号化されたデバイスに自動的にマウントする必要があります。
どうすればいいですか?
答え1
問題は、システムが自動的に暗号化デバイスをインストールするには、そのデバイスのキーを同じシステムのどこかに保存する必要があることです。その結果、システムが盗まれた場合、キーが損傷する可能性があります。これがあなたに当てはまる場合は、読んでください。
udev
Linux用のプラグアンドプレイマネージャです。ハードウェアが接続(切断)されるたびに、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
識別しようとするため、スクリプトは少し複雑です。これを行うためにスクリプトに含めたロジックは次のとおりです。sda
sdb
$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
この時点で、$VNAME
USBで認識されるデバイス名があります。その後、既知の暗号化ボリュームであるかどうかをテストし、マウントするための適切なコマンドをスクリプトできます。また、切断後に自動的にクリーンアップされるようにマウント解除ハンドラをスクリプトする必要があります。
udevスクリプトを書くには多くのリスクがあります。失敗すると、udevが機能しなくなり、追加のハードウェア変更を識別できない可能性があるためです。気をつけて進めてください。