Linux: подключение к виртуальному com-порту USB без рут-доступа?

912
Furo

Я пытаюсь подключить микроконтроллер к главному компьютеру через виртуальный com-порт USB. Однако у меня нет привилегий root на хост-компьютере. Контроллер отображается как / dev / ttyACM0.

Когда я пытаюсь подключиться к нему с помощью модуля pyserial, появляется сообщение «Отказано в доступе ».

Есть ли способ обойти это без использования каких-либо команд sudo? Может быть, как-то заставить микроконтроллер объявить себя не как ACM ? Можно ли таким образом избежать проблемы с разрешениями?

$ ls -l /dev/ttyACM0 crw-rw----. 1 root dialout 166, 0 Apr 4 13:44 /dev/ttyACM0 $ id uid=1003(mri) gid=1001(nmruser) groups=1001(nmruser),100(users),1000(nmrsu) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102‌​3 

К сожалению, я не могу изменить разрешения. Хост - это компьютер МРТ сканера. Его система поддерживается производителем сканера. Я подумал об использовании Ethernet, но я надеялся, что есть способ избежать этого.

3

2 ответа на вопрос

2
mtak

По умолчанию необработанный доступ к большинству (если не ко всем) устройствам разрешен только для пользователя root. Вы должны будете изменить разрешения, /dev/ACM0чтобы ваша учетная запись пользователя могла их использовать. Обычная группа для этого использования dailout, но это может быть любой пользователь / группа с правами на запись в «файл».

Вы можете изменить разрешения с помощью chmodи chown:

$ chmod 664 /dev/ttyACM0 $ chown root:dailout /dev/ttyACM0 

Каждое последовательное соединение, которое вы собираетесь установить, будет иметь эту проблему. Если вы хотите избежать этого, вам придется использовать внешнюю среду, которая по умолчанию не заблокирована, например, Ethernet. Затем можно настроить сервер HTTP или MQTT для передачи данных между хостом и микроконтроллером.

Я не знаю, каковы ваши учетные данные, но я бы не хотел возиться с МРТ сканером. Удачи! mtak 7 лет назад 2
0
dirkt

Попросите человека, у которого есть права root, установить udevправило, которое назначает пользовательское имя, права группы и группы для того, что есть сейчас /dev/ttyACM0. Также вы должны стать участником этой группы.

После этого вы можете открыть устройство без рута.

Вы не можете сделать это изменение, не имея root-прав или физического доступа, так что вы можете стать пользователем root по этому случаю.

Можете ли вы объяснить, как я могу назначить группу для `/ dev / ttyACM0`? Я использовал `SUBSYSTEMS ==" usb ", ATTRS ==" f055 ", MODE =" 0666 ", GROUP =" groupname "`. Это только меняет группу `/ dev / bus / usb / x / y`. Furo 7 лет назад 0