54 votes

Comment permettre à un utilisateur autre que celui par défaut d'utiliser le périphérique série ttyUSB0 ?

J'ai un système Ubuntu 11.10 avec 2 utilisateurs :

  • Le premier a été créé lors de l'installation
  • La deuxième place a été créée après. Il appartient au groupe sudoers.

Maintenant, le problème est que lorsque le second essaie d'utiliser un appareil ttyUSB0 l'erreur suivante est renvoyée :

"Could not open serial port /dev/ttyUSB0"

J'ai pu le réparer en utilisant :

sudo chown :second_user /dev/ttyUSB0

Cependant, lorsque je déconnecte le dispositif et le reconnecte, le problème revient.

Existe-t-il un moyen de permettre à différents utilisateurs d'accéder aux appareils ? Je suppose que je dois ajouter l'utilisateur à un groupe spécifique. Actuellement, le propriétaire est root et le groupe est dialout . Cependant, je ne suis pas sûr du groupe et je ne sais pas comment ajouter l'utilisateur.

Merci !

75voto

tags2k Points 11036

Comme vous l'avez remarqué, le /dev/ttyUSB0 a le groupe de dialout . Tout ce que vous avez à faire est d'ajouter le deuxième utilisateur à la liste des utilisateurs. dialout groupe :

sudo adduser second_user dialout

Le second_utilisateur devra se déconnecter et se reconnecter pour que cela prenne effet.

20voto

Orion Lawlor Points 425

Le moyen le plus simple :

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

Sauvegarder ce texte :

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

Débranchez le dispositif et rebranchez-le, et il devrait pouvoir être lu/écrit par n'importe quel utilisateur !

8voto

Mufaka Points 54

Vous pouvez utiliser UDEV. C'est un système qui se déclenche à chaque fois qu'on branche ou débranche un périphérique (entre autres). Avec lui, vous script diverses choses à se produire, y compris la mise en place de permissions.

Exécuter sudoedit /etc/udev/rules.d/50-ttyusb.rules et mettre ça là-dedans :

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

Sauvegardez, quittez et rebranchez et vous devriez être opérationnel. En fixant la permission à 666, n'importe qui peut écrire sur le périphérique.

Je me base sur cette page qui date d'il y a quelques années, mais quelque chose comme ça devrait fonctionner si Jeremy est solution ne le fait pas.

5voto

mtrc Points 652

Fantastique - la solution UDEV donnée ici était le ticket pour moi.

J'ai installé le programme CS-F3020_F5010_F5020 d'Icom via Wine, créé le lien pour le port Com comme suit :

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

Puis j'ai réalisé que je devais changer les permissions sur /dev/ttyUSB0 pour me permettre d'y accéder. Cela fonctionne très bien jusqu'à ce que vous débranchiez/rebranchiez la clé USB, alors vous devez modifier à nouveau les permissions.

J'ai essayé d'ajouter mon utilisateur au groupe d'appel mais cela n'a pas résolu le problème pour une raison quelconque.

L'utilisation d'UDEV résout la dernière pièce du puzzle. Maintenant, je peux programmer ma radio Icom en utilisant Linux, brancher et débrancher le périphérique USB/Série sans plus de problème. Woohoo. Merci.

3voto

John Bowler Points 31

Les règles udev fonctionnent mais, telles qu'elles sont écrites, elles ont l'effet secondaire très désagréable de rendre tout ttyUSB* accessibles à tous. Ce n'est pas une bonne chose car cela peut constituer un risque pour la sécurité en fonction de ce qui se trouve sur le système.

Utilisez plutôt une règle udev plus sélective. Par exemple, j'ai un périphérique USB qui fait fonctionner un ensemble de commutateurs. À partir de dmesg, lorsqu'il est branché, je peux voir l'ID du fabricant et le code produit (et même, dans ce cas, un numéro de série pour le périphérique). Je peux ajouter :

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

aux lignes du noyau ci-dessus et la règle ne s'appliquera qu'à ce périphérique. Encore mieux, plutôt que d'assigner au MODE La variable seule a mis le groupe dans le même état :

GROUP="whatever", MODE="0660"

alors seules les personnes du groupe ' whatever ' obtiendra un accès en écriture.

John Bowler

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X