La regla Arch udev no se activa

La regla Arch udev no se activa

Estoy intentando activar xsecurelock al eliminar un yubikey. Esto se hace de la siguiente manera:

archivo: 90-yubikey.rules:

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

Luego corrí sudo udev --reloady eliminé el yubikey, pero no pasó nada.

Solía udevadm --property​​​​confirmar que udev detectó la eliminación del dispositivo y que el idVendor era efectivamente 1050.

NB: Soy consciente de que la ejecución /bin/xsecurelockse bloqueará como root, lo cual no es ideal, pero lo arreglaré una vez que active la regla :)

Respuesta1

ATTRS{} no coincide con las propiedades de udev, coincide con los atributos de sysfs, que son algo completamente diferente. Lee directamente archivos del subdirectorio del dispositivo en /sys cada vez que se usa, y el subdirectorio de su Yubikey simplemente ya no existe una vez que se ha desconectado.

Los valores que ve en 'udevadm monitor --property' se almacenan en la base de datos udev y se pueden comparar usando ENV{} o ENVS{} durante la eliminación. Entonces, en lugar de ATTRS{idVendor}deberías usar ENV{ID_VENDOR_ID}.

Aparte de eso, existen reglas para escribir reglas de udev:

  1. Las reglas de Udev no pueden iniciar procesos de larga duración; 'RUN' está destinado a herramientas auxiliares que preparan el dispositivo, por lo que todo el manejo del dispositivo espera a que salga.
  2. Las reglas de Udev no pueden ejecutar nada relacionado con X11, ya que no tienen la dirección del servidor X.

Una solución alternativa común es utilizarlo RUN+="systemctl ..."para iniciar el programa como un servicio systemd.

El método más apropiado en su caso es utilizar RUN+="loginctl lock-sessions"y dejar que su entorno de escritorio (o xss-lock) se encargue del inicio de su protector de pantalla.

información relacionada