Como eu permito que um usuário não padrão use o dispositivo serial ttyUSB0?

25

Eu tenho um sistema Ubuntu 11.10 com 2 usuários:

  • O primeiro foi criado durante a instalação
  • O segundo foi criado depois. Pertence ao grupo de sudoers.

Agora, o problema é que, quando o segundo tenta usar um dispositivo ttyUSB0 , o seguinte erro é retornado:

"Could not open serial port /dev/ttyUSB0"

Consegui corrigi-lo usando:

sudo chown :second_user /dev/ttyUSB0

No entanto, quando eu desconecto o dispositivo e reconecto, o problema volta.

Existe uma maneira de permitir que diferentes usuários acessem os dispositivos? Eu suponho que tenho que adicionar o usuário a um grupo específico. Atualmente, o proprietário é root e o grupo é dialout . No entanto, não tenho certeza sobre o grupo e não sei como adicionar o usuário.

Obrigado!

    
por Maverik 13.03.2012 / 13:04

5 respostas

32

Como você percebeu, o dispositivo /dev/ttyUSB0 tem o grupo dialout . Tudo o que você precisa fazer é adicionar o segundo usuário ao grupo dialout :

sudo adduser second_user dialout

second_user precisará sair e & amp; faça o login novamente para que isso tenha efeito.

    
por Jeremy Kerr 13.03.2012 / 13:38
7

Você pode usar o UDEV. É um sistema que dispara toda vez que conecta ou desconecta um dispositivo (entre outras coisas). Com ele, você cria scripts para várias coisas, incluindo a configuração de permissões.

Execute sudoedit /etc/udev/rules.d/50-ttyusb.rules e insira isso aqui:

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

Salve, saia e faça a replicação, e você deve estar pronto e funcionando. Definir a permissão para 666 permite que qualquer pessoa grave no dispositivo.

Eu estou baseando isso em esta página que é de alguns anos atrás, mas algo assim deveria funcionar se de Jeremy solução não.

    
por Oli 13.03.2012 / 13:43
5

Fantástico - a solução UDEV dada aqui foi o ingresso para mim.

Eu instalei o programa CS-F3020_F5010_F5020 da Icom via Wine, criei o link para a porta Com da seguinte forma:

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

Então percebi que precisava alterar as permissões em / dev / ttyUSB0 para permitir que eu o acessasse. Isso funciona muito bem até você desconectar / reconectar o USB, então você precisa trocar as permissões novamente.

Eu tentei adicionar meu usuário ao grupo de discagem, mas isso não resolveu o problema por algum motivo.

O uso da UDEV resolve a peça final do quebra-cabeça. Agora posso programar meu rádio Icom usando o Linux, conecte e desconecte o dispositivo USB / Serial sem mais problemas. Woohoo Obrigado.

    
por Tom 07.12.2012 / 05:31
5

O caminho mais fácil:

sudoedit /etc/udev/rules.d/50-myusb.rules

Salvar este texto:

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

Desconecte o dispositivo e replique-o, e ele deve ser lido / gravado de qualquer usuário!

    
por Orion Lawlor 01.10.2015 / 09:03
2

As regras do udev funcionam, mas conforme escritas elas têm o efeito colateral muito desagradável de tornar todos os ttyUSB* dispositivos acessíveis a todos. Isso não é bom porque isso pode ser um risco de segurança dependendo do que mais estiver no sistema.

Em vez disso, use uma regra do udev mais seletiva. Por exemplo, eu tenho um dispositivo USB que opera um conjunto de switches. A partir do dmesg quando ele está conectado, consigo ver o ID do fabricante e o código do produto (mais, até mesmo, neste caso, um número de série para o dispositivo). Posso adicionar:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

para as linhas de kernel acima e a regra será aplicada apenas a esse dispositivo. Ainda melhor, em vez de atribuir à variável MODE , definir o grupo também:

GROUP="whatever", MODE="0660"

apenas as pessoas do grupo ' whatever ' terão acesso de gravação.

John Bowler

    
por John Bowler 10.11.2017 / 00:57