Я пытаюсь создать правило udev для разблокировки компьютера при подключении телефона по USB. Я не смог обнаружить, что это правило выполняется, поэтому я попробовал гораздо более простое правило. Вот правило (анонимное):
KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"
Я знаю, что правило выполняется, потому что ссылка phone -> sdc1
создается, но файл не создается. Есть ли настройки безопасности, которые мне нужно включить, чтобы файл запускал внешнюю программу?
решение1
Вы должны использовать полный путь в ключе RUN, потому что ( man udev
)
Если абсолютный путь не указан, программа должна находиться в /lib/udev, в противном случае необходимо указать абсолютный путь. Имя программы и аргументы разделяются пробелами. Для указания аргументов с пробелами можно использовать одинарные кавычки.
Тем не менее, сам скрипт (bash) должен вести себя как обычно, то есть вам не нужно указывать путь.
решение2
У меня была та же проблема с udev. Я перепробовал почти все, чтобы заставить скрипты работать при добавлении и удалении устройств.
Вот код, который я сделал:
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"
Добавление OPTIONS="last_rule"
параметра помогло.
решение3
У меня тоже была эта проблема, и я могу подтвердить, что по состоянию на 12.04 вам необходимо указать полный bash
путь и полный bash
скрипт для работы команды RUN.