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 -> sdc1
se 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 bash
ruta completa y bash
el script completo para que funcione el comando RUN.