udev Ejecutar comandos no se ejecuta

udev Ejecutar comandos no se ejecuta

Estoy intentando crear una regla udev para desbloquear mi computadora cuando conecto mi teléfono por USB. No pude encontrar que esa regla se estuviera ejecutando y entonces probé una regla mucho más simple. Esta es la regla (anonimizada):

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

Sé que la regla se está ejecutando porque phone -> sdc1se está creando el enlace pero no se está creando el archivo. ¿Existe alguna configuración de seguridad que deba habilitar para que el archivo ejecute un programa externo?

Respuesta1

Debe utilizar la ruta completa en la tecla RUN porque ( man udev)

Si no se proporciona una ruta absoluta, se espera que el programa resida en /lib/udev; de lo contrario, se debe especificar la ruta absoluta. El nombre del programa y los argumentos están separados por espacios. Se pueden utilizar comillas simples para especificar argumentos con espacios.

Sin embargo, el script (bash) debería comportarse normalmente, es decir, no es necesario especificar la ruta.

Respuesta2

Estaba teniendo el mismo problema con udev. Intenté casi todo para que los scripts funcionaran al agregar y eliminar dispositivos.

Este es el código que hice:

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

Agregar el OPTIONS="last_rule"parámetro funcionó.

Respuesta3

También tuve este problema y puedo confirmar que a partir del 12.04 es necesario especificar la bashruta completa y bashel script completo para que funcione el comando RUN.

información relacionada