나는 이 사이트와 내 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 구성 파일에서 직접 장치 모델 테스트를 수행하는 데 문제가 있는 것 같습니다(이유는 기억나지 않습니다. 오랫동안 스크립트를 건드리지 않았습니다). 최선의 접근 방식은 아니지만 적어도 작동합니다.