Linux: подключение к виртуальному com-порту USB без рут-доступа?
Я пытаюсь подключить микроконтроллер к главному компьютеру через виртуальный 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.c1023
К сожалению, я не могу изменить разрешения. Хост - это компьютер МРТ сканера. Его система поддерживается производителем сканера. Я подумал об использовании Ethernet, но я надеялся, что есть способ избежать этого.
2 ответа
По умолчанию необработанный доступ к большинству (если не ко всем) устройствам разрешен только для пользователя root. Вы должны были бы изменить разрешения на /dev/ACM0
разрешить вашей учетной записи пользователя использовать его. Общая группа для этого использования dailout
, но это может быть любой пользователь / группа с правами на запись в "файл".
Вы можете изменить разрешения с chmod
а также chown
:
$ chmod 664 /dev/ttyACM0
$ chown root:dailout /dev/ttyACM0
Каждое последовательное соединение, которое вы собираетесь установить, будет иметь эту проблему. Если вы хотите избежать этого, вам придется использовать внешнюю среду, которая по умолчанию не заблокирована, например, Ethernet. Затем можно настроить сервер HTTP или MQTT для передачи данных между хостом и микроконтроллером.
Попросите человека, который имеет root-доступ, настроить udev
Правило, которое назначает пользовательское имя, групповые и групповые права доступа к тому, что сейчас /dev/ttyACM0
, Также вы должны стать участником этой группы.
После этого вы можете открыть устройство без рута.
Вы не можете сделать это изменение, не имея root-прав или физического доступа, так что вы можете стать root-пользователем по этому случаю.