Lire / écrire sur un port série sans racine?
On février 12, 2021 by adminJécris une application pour lire / écrire vers / depuis un port série dans Fedora14, et cela fonctionne très bien lorsque je lexécute en tant que root. Mais quand Je lexécute en tant quutilisateur normal. Je ne parviens pas à obtenir les privilèges requis pour accéder au périphérique (/ dev / ttySx). Cest un peu merdique parce que maintenant je ne peux pas vraiment déboguer ce fichu truc en utilisant Eclipse.
Jai essayé dexécuter Eclipse avec sudo mais cela corrompt mon espace de travail et je ne peux même pas ouvrir le projet. Donc jaimerais savoir sil est possible de réduire les conditions daccès pour écrire dans / dev / ttySx afin que nimporte quel utilisateur normal puisse y accéder. Est-ce possible?
Réponse
Le droit daccéder à un port série est déterminé par les permissions du fichier de lappareil (par exemple /dev/ttyS0
). Donc, tout ce que vous avez à faire est de faire en sorte que lappareil vous appartienne, ou (mieux) de vous mettre dans le groupe qui possède lappareil, ou (si Fedora le prend en charge, ce que je pense que cest le cas) de faire en sorte que lappareil appartiennent à lutilisateur qui est connecté à la console.
Par exemple, sur mon système (pas Fedora), /dev/ttyS0
appartient à lutilisateur root
et le groupe dialout
, donc pour pouvoir accéder au périphérique série, je me rajouterais au dialout
group:
usermod -a -G dialout MY_USER_NAME
Commentaires
Réponse
De nombreuses distributions utilisent les appartenances aux groupes pour permettre laccès aux ports série. Cependant, je ne connais pas les détails de Fedora.
Réponse
Je pense que vous pouvez vous ajouter dans le fichier sudoers qui sera vous permet de spécifier un ensemble de commandes comme alias de commande que vous pourriez exécuter sans mot de passe. Vous pouvez trouver un excellent tutoriel sur le fichier sudoers dans documentation Ubuntu .
Vous pouvez alors exécuter eclipse normalement et il « serait capable dexécuter ces commandes spécifiques sans autorisations root.
Réponse
Cest une vieille question, mais je sens que je peux contribuer car javais une étape supplémentaire à faire pour résoudre mon problème. Je suis venu à cette question en essayant de me connecter à un micro: bit sur le port / dev / ttyACM0 en utilisant Debian 10.
ls -al /dev/ttyACM0
affiche:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Ceci indique pourquoi nous pouvons accéder au port en utilisant sudo – il appartient à root. Il montre également pourquoi lajout de lutilisateur non root au groupe de numérotation permet laccès sans être root. Jai ajouté mon compte utilisateur au groupe de numérotation dans / etc / group en utilisant:
sudo usermod -a -G dialout <user>
Je nai toujours pas pu me connecter avec le microbit en utilisant un moniteur de port série sans être root.
Le micro: bit est monté sous / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Cela montre que le répertoire sur lequel le micro: bit est monté appartient à root. Javais besoin de changer le propriétaire et le groupe de ce répertoire en:
« » « sudo chowner / media / sudo chgrp / media / » « »
Je peux maintenant me connecter au micro : bit utilisant un moniteur de port série sans utiliser sudo.
Réponse
Jai eu ce problème aussi dans la journée, à part en ajoutant un utilisateur à un groupe dialout , vous devez également donner lautorisation à cet utilisateur daccéder à / dev. simplement su -> entrez le mot de passe root -> chmod -R 777 / dev -R, signifie mode récursif, tout ce qui se trouve dans ce dossier aura la même autorisation
le problème est le suivant, vous devez le faire à chaque redémarrage votre ordinateur ou branchez et débranchez votre appareil hein !!!
Commentaires
-
chmod -R 777 /dev
est un très mauvaise idée. - Yaah daccord, sil y a une autre suggestion à ce sujet, ce sera génial
- Je me demande si vous deviez vous déconnecter et vous reconnecter, comme dans le commenter la réponse acceptée? Cela trébuche souvent les gens.
- Donner un accès gratuit à tous les utilisateurs à tout ce qui se trouve dans / dev / est extrêmement dangereux à faire. Veuillez ne pas ' faire cela.
sudo usermod -a -G dialout $USER
🙂