Estou tentando criar uma regra do udev para desbloquear meu computador quando conecto meu telefone por USB. Não consegui descobrir que essa regra estava sendo executada e tentei uma regra muito mais simples. Esta é a regra (anonimizada):
KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"
Eu sei que a regra está em execução porque o link phone -> sdc1
está sendo criado, mas o arquivo não está sendo criado. Há configurações de segurança que devo ativar para que o arquivo execute um programa externo?
Responder1
Você deve usar o caminho completo na chave RUN porque ( man udev
)
Se nenhum caminho absoluto for fornecido, espera-se que o programa resida em /lib/udev, caso contrário, o caminho absoluto deverá ser especificado. O nome do programa e os argumentos são separados por espaços. Aspas simples podem ser usadas para especificar argumentos com espaços.
No entanto, o script (bash) em si deve se comportar normalmente, ou seja, você não precisa especificar o caminho.
Responder2
Eu estava tendo o mesmo problema com o udev. Tentei quase tudo para que os scripts funcionassem ao adicionar e remover dispositivos.
Este é o código que fiz:
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"
Adicionar o OPTIONS="last_rule"
parâmetro resolveu o problema.
Responder3
Também tive esse problema e posso confirmar a partir de 12.04 que você precisa especificar o bash
caminho completo e bash
o script completo para que o comando RUN funcione.