Udev

UDEV 規則未觸發

  • December 13, 2014

我已經在這個網站和其他網站上瀏覽了 10 個答案,試圖調試我的 udev 規則,但無濟於事。規則很簡單:我想在拔掉Yubikey時鎖定螢幕。

  • 我的規則在文件中/etc/udev/rules.d/98-yubikey.rules
  • 我已經嘗試了這兩種# udevadm control --reload-rules && udevadm trigger方法,只需重新啟動電腦即可更新規則。

以下是我到目前為止嘗試過的規則,其中沒有一個會鎖定螢幕(我已經測試過腳本確實在執行時鎖定了螢幕)。

  1. ACTION=="remove", SUBSYSTEM=="input", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
  2. ACTION=="add", SUBSYSTEM=="input", ENV{ID_VENDOR_ID}=="XXXX", ENV{ID_MODEL_ID}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
  3. 這些項目的各種組合,有或沒有子系統/所有者(以及子系統作為 USB 而不是輸入)。

我有一個配置為執行相同操作的系統,它看起來像這樣:

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 配置文件中與設備模型測試一起工作(我不記得為什麼 - 很長時間沒有觸及腳本)。這不是最好的方法,但它至少可以工作。

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