Как сделать так, чтобы конкретное устройство имело права на чтение / запись при подключении?

У меня есть домашнее устройство, которое можно подключить через USB-порт. При подключении он получает сокет ttyACM. Так что я задал этот вопрос некоторое время назад о том, как установить разрешения на чтение / запись для устройства. После ответа я создал /etc/udev/rules.d/50-ttyusb.rules файл с этим содержанием:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

Все работает отлично! Но если я правильно понимаю, теперь каждое устройство, подключенное к любому сокету ttyUSB или ttyACM, будет иметь права на чтение / запись. Правильно?

У меня вопрос, как я могу автоматически устанавливать разрешения на чтение / запись только для этого устройства при подключении?

Соответствующий lsusb выход:

Bus 003 Device 005: ID ffff:0005

1 ответ

Решение
  • Да, это дает разрешение публичным пользователям на все эти последовательные устройства.
  • Ты можешь использовать ATTRS{idVendor} & ATTRS{idProduct} отфильтровать целевые устройства:

    ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"
    

    я добавить ACTION=="add" пропустить другое нежелательное событие remove (узел устройства уже удален) & change (узел устройства уже добавлен и настроен)

Другие вопросы по тегам