Configure o udev para alterar as permissões no dispositivo USB HID?

16

Eu tenho uma balança USB, um USB HID. Atualmente, quando está conectado, as permissões só permitem que o superusuário o acesse. Como posso configurar o udev para permitir que alguém acesse esse dispositivo? Eu tenho os IDs do fornecedor e do produto, mas gostaria de combiná-lo com base no tipo de HID.

Neste momento, estou com problemas para encontrar qualquer regra existente que se aplique a isso (procurei por "hidraw" em /lib/udev/rules.d e /etc/udev/rules.d , entre outras coisas).

    
por erjiang 30.11.2010 / 19:02

4 respostas

16

Normalmente, isso é feito adicionando a /etc/udev/rules.d um arquivo chamado 50-usb-scale.conf com conteúdo como este:

SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"

Onde HEX1 e HEX2 são substituídos pelo fornecedor e id do produto, respectivamente.

Para corresponder ao tipo de interface, você pode tentar substituir ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2" por uma correspondência de bInterfaceClass sendo 03 (HID):

SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"

Mas esteja avisado, isso também irá capturar ratos e teclados.

    
por Kees Cook 01.12.2010 / 08:19
5

Caso você precise alterar (como eu) ttyACM0 permissões, estas são minhas configurações:

KERNEL=="ttyACM0", MODE="0777"

Ele falhou quando tentei especificar o fornecedor e o ID do produto. Não sei porquê.

    
por Rodo 19.09.2012 / 13:38
3

Apenas para o resumo:

Você pode filtrar por:

  • idVendor
  • idProduct
  • serial

E use:

== Compare por igualdade.

! = Compare por desigualdade.

= Atribui um valor a uma chave. As chaves que representam uma lista são redefinidas e somente esse valor único é atribuído.

+ = Adiciona o valor a uma chave que contém uma lista de entradas.

: = Atribuir um valor a uma chave finalmente; não permitir alterações posteriores.

Você pode dar a um dispositivo específico um novo caminho específico em / dev / ...
Exemplo:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"

Resultados em:

Você pode acessar o dispositivo através de '/ dev / hiddevx' ou via '/ dev / myhid' de maneira fácil, cada usuário no grupo 'cdrom' pode ler a partir do dispositivo. Proprietário 'user28' pode ler e escrever.

ou mais simples:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"

Resultados em: Cada usuário pode acessar todos os hiddevice do fornecedor 0x16c0

Para mais detalhes, consulte: Docs

    
por rundekugel 07.12.2014 / 17:38
2

Se for um dispositivo HIDRAW, você precisa

chmod 0666 /dev/hidrawX

em que X é o número do dispositivo ocultado, por exemplo, hidraw0. você pode fazer

ls /dev/hid*

para ver uma lista :) Ou apenas faça

sudo chmod 0666 /dev/hidraw*

para definir todos os dispositivos hidraw, provavelmente não recomendados.

    
por Muriuki David 27.01.2014 / 13:02