Ler / gravar em uma porta serial sem raiz?
On Fevereiro 12, 2021 by adminEstou escrevendo um aplicativo para ler / gravar de / para uma porta serial no Fedora14 e funciona muito bem quando eu o executo como root. Mas quando Eu o executo como um usuário normal e não consigo obter os privilégios necessários para acessar o dispositivo (/ dev / ttySx). Isso é uma porcaria porque agora não consigo depurar a droga usando o Eclipse.
Tentei executar o Eclipse com sudo, mas ele corrompe meu espaço de trabalho e nem consigo abrir o projeto. Portanto, gostaria de saber se é possível reduzir os requisitos de acesso para gravar em / dev / ttySx para que qualquer usuário normal possa acessá-lo. Isso é possível?
Resposta
O direito de acessar uma porta serial é determinado pelas permissões do arquivo do dispositivo (por exemplo, /dev/ttyS0
). Portanto, tudo o que você precisa fazer é providenciar para que o dispositivo seja de sua propriedade ou (melhor) colocar-se no grupo que possui o dispositivo ou (se o Fedora oferecer suporte, o que eu acho que sim) providenciar para que o dispositivo pertencem ao usuário que está logado no console.
Por exemplo, no meu sistema (não no Fedora), /dev/ttyS0
é propriedade do usuário root
e o grupo dialout
, para poder acessar o dispositivo serial, eu me adicionaria ao dialout
grupo:
usermod -a -G dialout MY_USER_NAME
Comentários
Resposta
Muitas distribuições usam associações de grupos para permitir o acesso às portas seriais. No entanto, não sei detalhes sobre o Fedora improvisadamente.
Resposta
Acho que você pode se adicionar ao arquivo sudoers, que irá permitem que você especifique um conjunto de comandos como alias de comando que você poderia executar sem senha. Você pode encontrar um excelente tutorial sobre o arquivo sudoers em Ubuntu docs .
Você pode então executar o eclipse normalmente e ele “pode executar esses comandos específicos sem permissões de root.
Resposta
Esta é uma pergunta antiga, mas sinto que posso contribuir, pois tive que realizar uma etapa adicional para resolver meu problema. Cheguei a esta questão ao tentar conectar a um micro: bit na porta / dev / ttyACM0 usando o Debian 10.
ls -al /dev/ttyACM0
exibe:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Isso indica porque podemos acessar a porta usando sudo – ela é propriedade do root. Também mostra por que adicionar o usuário não root ao grupo de discagem permite acesso sem ser root. Eu adicionei minha conta de usuário ao grupo de discagem em / etc / group usando:
sudo usermod -a -G dialout <user>
Ainda não consegui conectar com o micróbio usando um monitor de porta serial sem ser root.
O micro: bit é montado em / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Isso mostra que o diretório em que o micro: bit está montado pertence ao root. Eu precisava mudar o proprietário e o grupo deste diretório para:
“” “sudo chowner / media / sudo chgrp / media /” “”
Agora posso me conectar ao micro : bit usando um monitor de porta serial sem usar sudo.
Resposta
Eu tive esse problema também no passado, além de adicionando o usuário a um grupo dialout , você também precisa dar permissão para esse usuário acessar / dev. simplesmente su -> insira a senha root -> chmod -R 777 / dev -R, significa modo recursivo, tudo dentro dessa pasta terá a mesma permissão
o problema é este, você precisa fazer isso toda vez que reiniciar seu computador ou conecte e desconecte seu dispositivo huh !!!
Comentários
-
chmod -R 777 /dev
é um péssima ideia. - Yaah concorda, se houver alguma outra sugestão para isso, será ótimo
- Eu me pergunto se você precisou se desconectar e entrar novamente, como no comentar sobre a resposta aceita? Isso costuma confundir as pessoas.
- Fornecer acesso gratuito a todos os usuários a tudo dentro de / dev / é extremamente inseguro de se fazer. Não ' faça isso.
sudo usermod -a -G dialout $USER
🙂