yubikey 제거 시 xsecurelock을 실행하려고 합니다. 이는 다음과 같이 수행됩니다.
파일: 90-yubikey.rules
:
ACTION="remove", SUBSYSTEM="usb", ATTRS{idVendor}=="1050", RUN+="/bin/xsecurelock"
그런 다음 실행하여 sudo udev --reload
yubikey를 제거했지만 아무 일도 일어나지 않았습니다.
나는 udevadm --property
udev가 장치 제거를 감지했으며 idVendor가 실제로 1050인지 확인하곤 했습니다.
주의: 실행이 루트로 잠길 것이라는 점을 알고 있는데 /bin/xsecurelock
이는 이상적이지 않지만 규칙이 트리거되면 이를 수정하겠습니다. :)
답변1
ATTRS{}는 udev 속성과 일치하지 않습니다. 이는 완전히 다른 sysfs 속성과 일치합니다. 사용할 때마다 /sys 아래의 장치 하위 디렉터리에서 파일을 직접 읽으며 Yubikey의 하위 디렉터리는 플러그를 뽑으면 더 이상 존재하지 않습니다.
'udevadm monitor --property'에 표시되는 값은 udev 데이터베이스에 저장되며 제거 중에 ENV{} 또는 ENVS{}를 사용하여 일치시킬 수 있습니다. 따라서 대신 ATTRS{idVendor}
에 ENV{ID_VENDOR_ID}
.
그 외에도 udev 규칙 작성에는 다음과 같은 규칙이 있습니다.
- Udev 규칙은 장기 실행 프로세스를 시작할 수 없습니다. 'RUN'은 장치를 준비하는 도우미 도구를 의미하므로 모든 장치 처리는 장치가 종료될 때까지 기다립니다.
- Udev 규칙은 X 서버의 주소가 없기 때문에 X11과 관련된 어떤 것도 실행할 수 없습니다.
일반적인 해결 방법은 RUN+="systemctl ..."
프로그램을 시스템 서비스로 시작하는 것입니다.
귀하의 경우 가장 적절한 방법은 RUN+="loginctl lock-sessions"
데스크탑 환경(또는 xss-lock)을 사용하여 화면 보호기 실행을 처리하도록 하는 것입니다.