UDEV 规则未触发

UDEV 规则未触发

我已经在这个网站和其他网站上查看了数十个答案,试图调试我的 udev 规则,但无济于事。规则很简单:我想在我的屏幕锁定时锁定我的屏幕。尤比奇已拔掉插头。

  • 我的规则在文件里/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 而不是输入)。

答案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 配置文件中与设备模型测试一起工作时遇到了麻烦(我不记得为什么 - 该脚本已经很长时间没有被触及了)。这不是最好的方法,但至少有效。

相关内容