Arch-Udev-Regel wird nicht ausgelöst

Arch-Udev-Regel wird nicht ausgelöst

Ich versuche, xsecurelock beim Entfernen eines Yubikeys auszulösen. Dies geschieht wie folgt:

Datei: 90-yubikey.rules:

ACTION="remove", SUBSYSTEM="usb", ATTRS{idVendor}=="1050", RUN+="/bin/xsecurelock"

Dann bin ich losgelaufen sudo udev --reloadund habe den Yubikey entfernt, aber nichts ist passiert.

Ich habe udevadm --propertybestätigt, dass Udev die Entfernung des Geräts erkannt hat und dass der IDVendor tatsächlich 1050 war.

NB: Mir ist bewusst, dass die Ausführung /bin/xsecurelockals Root gesperrt wird, was nicht ideal ist, aber ich werde das beheben, sobald die Regel ausgelöst wird :)

Antwort1

ATTRS{} stimmt nicht mit udev-Eigenschaften überein – es stimmt mit sysfs-Attributen überein, was etwas völlig anderes ist. Es liest bei jeder Verwendung direkt Dateien aus dem Unterverzeichnis des Geräts unter /sys, und das Unterverzeichnis für Ihren Yubikey existiert einfach nicht mehr, sobald er ausgesteckt wurde.

Die Werte, die Sie in „udevadm monitor --property“ sehen, werden in der Udev-Datenbank gespeichert und können beim Entfernen mit ENV{} oder ENVS{} abgeglichen werden. Anstelle von ATTRS{idVendor}sollten Sie also verwenden ENV{ID_VENDOR_ID}.

Abgesehen davon gibt es Regeln zum Schreiben von Udev-Regeln:

  1. Udev-Regeln können keine Prozesse mit langer Laufzeit starten; „RUN“ ist für Hilfstools gedacht, die das Gerät vorbereiten, sodass die gesamte Geräteverarbeitung auf das Beenden wartet.
  2. Udev-Regeln können nichts X11-bezogenes ausführen, da sie nicht über die Adresse des X-Servers verfügen.

Eine gängige Problemumgehung besteht darin, RUN+="systemctl ..."das Programm als systemd-Dienst zu starten.

In Ihrem Fall besteht die am besten geeignete Methode darin, RUN+="loginctl lock-sessions"den Start Ihres Bildschirmschoners Ihrer Desktopumgebung (oder XSS-Lock) zu überlassen.

verwandte Informationen