私はこのサイトと私のudevルールをデバッグしたい他のサイトで何十もの答えを見ましたが、役に立ちませんでした。ルールは簡単です。画面がロックされているときに画面をロックしたいです。ユビックプラグが抜かれた。
- 私のルールはファイルにあります
/etc/udev/rules.d/98-yubikey.rules
。 - 両方の方法を試して、
# udevadm control --reload-rules && udevadm trigger
コンピュータを再起動すると、ルールが更新されました。
これまでに試したルールは次のとおりです。どちらも画面をロックしません(スクリプトが実行されたときに実際に画面をロックすることをテストしました)。
ACTION=="remove", SUBSYSTEM=="input", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
ACTION=="add", SUBSYSTEM=="input", ENV{ID_VENDOR_ID}=="XXXX", ENV{ID_MODEL_ID}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
- サブシステム/所有者(および入力の代わりにUSBとしてのサブシステム)の有無にかかわらず、これらのプロジェクトのさまざまな組み合わせ。
答え1
同じタスクを実行するように構成されたシステムがあります。
SUBSYSTEM=="input", ACTION=="remove", RUN+="/usr/local/sbin/yubikey_gone"
これにより、スクリプトには次のものが/usr/local/sbin/yubikey_gone
含まれます。
#!/bin/sh
if [ "x$ID_MODEL" != "xYubico_Yubikey_II" ]; then
exit 0
fi
exec su vandry -c "DISPLAY=:0.0 gnome-screensaver-command --lock"
次の場合、スクリプトが呼び出されます。どの入力デバイスが切り離され、スクリプトは続行する前に実際にYubikeyであるかどうかをテストします。これは正しい解決策ではありませんが、udev設定ファイルから直接デバイスモデルテストを実行するのに問題があるようです(理由は覚えていません。長い間スクリプトに触れていません)。最善のアプローチではありませんが、少なくとも動作します。