udev Executa comandos que não estão em execução

udev Executa comandos que não estão em execução

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 -> sdc1está 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 bashcaminho completo e basho script completo para que o comando RUN funcione.

informação relacionada