Linux: conectando-se a uma porta USB virtual sem acesso root?

3

Estou tentando conectar um microcontrolador a um computador host usando uma porta USB virtual. No entanto, não tenho privilégios de root no computador host. O controlador aparece como / dev / ttyACM0.

Quando tento conectar-me a ele usando o módulo pyserial , ocorre um erro dizendo "permissão negada".

Existe uma maneira de contornar isso sem usar nenhum comando sudo? Talvez de alguma forma forçando o microcontrolador a se anunciar não como ACM ? O problema da permissão poderia ser evitado dessa maneira?

$ 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

Infelizmente não posso alterar as permissões. O host é o computador de um scanner de ressonância magnética. Seu sistema é mantido pelo fabricante do scanner. Pensei em usar Ethernet, mas esperava que houvesse uma maneira de evitá-lo.

Furo
fonte

Respostas:

2

Por padrão, o acesso bruto à maioria dos dispositivos (se não todos) é permitido apenas como root. Você precisaria alterar as permissões /dev/ACM0para permitir que sua conta de usuário a usasse. Um grupo comum para esse uso é dailout, mas pode ser qualquer usuário / grupo com acesso de gravação ao 'arquivo'.

Você pode alterar as permissões com chmode chown:

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

Toda conexão serial que você fará, terá esse problema. Se você quiser evitar isso, seria necessário usar um meio fora de banda, que não é bloqueado por padrão, como Ethernet. Você pode configurar um servidor HTTP ou MQTT para transferir dados entre o host e o microcontrolador.

mtak
fonte
2
Não sei quais são suas credenciais, mas não gostaria de mexer com um scanner de ressonância magnética. Boa sorte!
mtak
0

Peça à pessoa que possui acesso root para configurar uma udevregra que atribua um nome personalizado, grupo e permissões de r / w de grupo ao que é agora /dev/ttyACM0. Além disso, você deve se tornar um membro deste grupo.

Depois disso, você pode abrir o dispositivo sem fazer root.

Você não pode fazer essa alteração sem ter direitos de root ou acesso físico para poder se tornar root uma vez nesta ocasião.

dirkt
fonte
Você pode explicar como eu posso atribuir um grupo /dev/ttyACM0? Eu usei SUBSYSTEMS=="usb", ATTRS{idVendor}=="f055", MODE="0666", GROUP="groupname". Isso muda apenas o grupo de /dev/bus/usb/x/y.
Furo