Leitura / gravação em uma porta serial sem raiz?

31

Estou escrevendo um aplicativo para leitura / gravação 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, não consigo obter os privilégios necessários para acessar o dispositivo (/ dev / ttySx). Isso é meio ruim, porque agora não consigo depurar nada usando o Eclipse.

Tentei executar o Eclipse com o sudo, mas ele corrompe meu espaço de trabalho e não consigo nem abrir o projeto. Então, eu gostaria de saber se é possível diminuir os requisitos de acesso para gravar em / dev / ttySx para que qualquer usuário normal possa acessá-lo. Isso é possível?

iegod
fonte

Respostas:

46

O direito de acessar uma porta serial é determinado pelas permissões do arquivo do dispositivo (por exemplo /dev/ttyS0). Então, tudo 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 suportar, o que eu acho que sim) providenciar para que o dispositivo pertencem ao usuário que efetuou login no console.

Por exemplo, no meu sistema (não no Fedora), /dev/ttyS0é de propriedade do usuário roote do grupo dialout, para poder acessar o dispositivo serial, eu me adicionaria ao dialoutgrupo:

usermod -a -G dialout MY_USER_NAME
Gilles 'SO- parar de ser mau'
fonte
11
Eu vou aceitar este, uma vez que me colocou no caminho certo. Para o Fedora, o comando usermod é usado após a criação do usuário. O grupo em questão também foi discado para mim: sudo usermod -a -G dialout <username>. Felicidades.
precisa saber é
5
Observe que você pode precisar sair e fazer login para aparecer no novo grupo
Jan Špaček
11
Por demanda popular: sudo usermod -a -G dialout $USER:-)
Ciro Santilli escreveu:
0

Muitas distribuições usam associações de grupos para permitir o acesso a portas seriais. Porém, não conheço detalhes do Fedora de antemão.

geekosaur
fonte
0

Eu acho que você pode adicionar-se no arquivo sudoers, que permitirá especificar um conjunto de comandos como alias de comando que você poderá executar sem senha. Você pode encontrar um excelente tutorial sobre o arquivo sudoers nos documentos do Ubuntu .

Você pode executar o eclipse normalmente e ele poderá executar esses comandos específicos sem permissões de root.

Deepak Mittal
fonte
-2

Eu tive esse problema também no passado, além de adicionar usuário a um grupo de discagem , você também precisa dar a permissão para esse usuário acessar / dev. simplesmente su -> digite a senha do root -> chmod -R 777 / dev -R, significa modo recursivo, tudo dentro dessa pasta terá a mesma permissão

o problema é esse, você precisa fazer isso toda vez que reiniciar o computador ou conectar e desconectar o dispositivo, hein !!!

Tunu Yolim Ngajilo
fonte
3
chmod -R 777 /devé uma péssima ideia.
RalfFriedl
Yaah concorda que, se houver outra sugestão para isso, será ótimo #
Tunu Yolim Ngajilo
Gostaria de saber se você precisava sair e entrar novamente, como no comentário da resposta aceita? Isso muitas vezes engana as pessoas.
sourcejedi
Dar acesso gratuito a todos os usuários a tudo o que está dentro de / dev / é extremamente perigoso. Por favor, não faça isso.
unfa 4/03