J'ai une balance USB, une clé USB HID. Actuellement, lorsqu'il est branché, les autorisations permettent uniquement au superutilisateur d'y accéder. Comment puis-je configurer udev pour permettre à quiconque d'accéder à ce périphérique? J'ai les identifiants de fournisseur et de produit, mais je voudrais plutôt les faire correspondre en fonction du type HID.
Pour le moment, je ne parviens pas à trouver une règle existante applicable à ce problème (je me suis écrié pour "hidraw" dans /lib/udev/rules.d
et /etc/udev/rules.d
, entre autres).
Normalement, ceci est fait en ajoutant à /etc/udev/rules.d
un fichier peut-être nommé 50-usb-scale.conf
avec un contenu comme celui-ci:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"
Où HEX1 et HEX2 sont remplacés par le fournisseur et l'ID du produit, respectivement.
Pour faire correspondre le type d'interface à la place, vous pouvez essayer de remplacer ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"
par une correspondance pour bInterfaceClass
, étant 03
(HID):
SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"
Mais soyez prévenus, cela attrapera aussi les souris et les claviers.
Juste pour le résumé:
Vous pouvez filtrer pour:
Et utilise:
== Comparez pour l'égalité.
! = Compare l'inégalité.
= Attribuer une valeur à une clé. Les touches représentant une liste sont réinitialisées et seule cette valeur unique est attribuée.
+ = Ajouter la valeur à une clé contenant une liste d'entrées.
: = Assigne une valeur à une clé finalement; interdire toute modification ultérieure.
Vous pouvez donner à un périphérique spécifique un nouveau chemin spécifique dans/dev/...
Exemple:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"
Résulte en:
Vous pouvez accéder au périphérique via "/ dev/hiddevx" ou via "/ dev/myhid" facilement, chaque utilisateur du groupe "cdrom" peut le lire depuis le périphérique. Le propriétaire 'utilisateur28' peut lire et écrire.
ou le plus simple:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"
Résultats en: Chaque utilisateur peut accéder à chaque périphérique à partir du fournisseur 0x16c0.
Pour plus de détails, voir: Docs
Au cas où vous auriez besoin de changer (comme moi) ttyACM0
permissions, voici mes paramètres:
KERNEL=="ttyACM0", MODE="0777"
Il a échoué lorsque j'ai tenté de spécifier le fournisseur et l'ID du produit. Je ne suis pas sûr pourquoi.
Ubuntu 18.04 mise à jour/clarification:
La réponse de Kees Cook est proche, mais deux modifications sont nécessaires pour fonctionner en 18.04 (la version actuelle et une seule sur laquelle j'ai testé ceci).
Bus 001 périphérique 011: ID 04b8: 014a Seiko Epson Corp.
SOUS-SYSTEME == "usb", ATTRS {idVendor} == "04b8", ATTR {idProduct} == "014a", MODE = "0666"Mais avec vos valeurs hex idVendor et idProduct.
Si c'est un appareil HIDRAW, vous devez
chmod 0666 /dev/hidrawX
où X est le numéro de périphérique caché, par exemple hidraw0. tu peux faire
ls /dev/hid*
pour voir une liste :) Ou tout simplement faire
Sudo chmod 0666 /dev/hidraw*
définir pour tous les appareils hidraw, probablement pas recommandé.