USB HID 장치에 대한 권한을 변경하도록 udev를 구성 하시겠습니까?


21

USB 스케일, USB HID가 있습니다. 현재 연결되어 있으면 권한이 슈퍼 유저 만 액세스 할 수 있습니다. 누구나이 장치에 액세스 할 수 있도록 udev를 구성하려면 어떻게해야합니까? 공급 업체 및 제품 ID가 있지만 대신 HID 유형을 기준으로 일치 시키려고합니다.

지금, 나는이 적용 기존 규칙 (나는에서 "hidraw"에 대한 grepped 찾는 데 문제 /lib/udev/rules.d그리고 /etc/udev/rules.d무엇보다도).

답변:


21

일반적으로 이것은 다음과 같은 내용으로 /etc/udev/rules.d이름이 지정된 파일 에 추가하여 수행됩니다 50-usb-scale.conf.

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

어디 HEX1HEX2은 각각 공급 업체 및 제품 ID로 대체됩니다.

대신 인터페이스 유형에 맞게하려면 교체 시도 할 수 ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"의 일치와 bInterfaceClass03(HID) :

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

그러나 마우스와 키보드도 잡을 수 있습니다.


4
우분투 14.04에서는 콜론없이 MODE : = "0666"을 사용해야합니다.
EdwinW

2
14.04에서이 파일은 .rules확장자 를 가져야합니다 . .conf확장자가 있는 파일이 작동하지 않습니다.
cherno

1
lsusb -vvvidProduct와 idVendor를 얻기 위해 사용
Xavier13

2
이 질문은 Google 출력에서 ​​매우 인기가 있기 때문에 ... ATTR이 아닌 ATTRS이어야한다고 생각합니다. 적어도이 변경으로 인해 문제가 해결되었습니다.
infthi

2
내가 찾은 14.04.5 LTS에서 : lsusb연결된 것과 ID를 볼 수있는 좋은 시작입니다. idVendoridProduct일치하는 것 대소 문자를 구분 ID는, 그래서 DA77나를 위해 작동하지 않지만 da77않습니다. (Handy diagnostic : udevadm info --attribute-walk /dev/bus/usb/008/023, bus 008 device 023 my example; lsusbfor yours.) 규칙을 추가 한 후 재부팅 sudo udevadm control --reload-rulessudo udevadm trigger피 합니다. 그 몇 초 후에 변경 사항이 있습니다. ATTR 대 ATTRS는 승산하지 않았습니다. 내 .rules 파일은 다음과 같습니다 SUBSYSTEM=="usb", ATTR{idVendor}=="da77", ATTR{idProduct}=="d12e", GROUP="users", MODE="0666"..
El Zorko

7

요약하면 다음과 같습니다.

다음을 필터링 할 수 있습니다.

  • idVendor
  • idProduct
  • 연속물

그리고 사용하십시오 :

== 평등을 비교합니다.

! = 불평등 비교.

= 키에 값을 할당하십시오. 목록을 나타내는 키가 재설정되고이 단일 값만 할당됩니다.

+ = 항목 목록을 보유한 키에 값을 추가하십시오.

: = 마지막으로 키에 값을 할당하십시오; 나중에 변경하지 마십시오.

/ dev /에서 특정 장치에 특정 새 경로를 지정할 수 있습니다.
예 :

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

결과 :

'/ dev / hiddevx'또는 '/ dev / myhid'를 통해 장치에 쉽게 액세스 할 수 있습니다. 'cdrom'그룹의 모든 사용자가 장치에서 읽을 수 있습니다. 소유자 'user28'은 읽고 쓸 수 있습니다.

또는 가장 간단한 :

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

결과 : 모든 사용자가 공급 업체 0x16c0에서 모든 숨김 장치에 액세스 할 수 있습니다.

자세한 내용은 다음을 참조하십시오. 문서


2
:=비교 용이 아닙니다. 문서에 "키에 값을 할당하고 나중에 변경하는 것은 허용하지 않습니다."라고 말합니다.
Lucas

5

(나처럼) ttyACM0권한 을 변경해야하는 경우이 설정은 다음과 같습니다.

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

공급 업체 및 제품 ID를 지정하려고 할 때 실패했습니다. 왜 그런지 잘 모르겠습니다.


그래, 더 나은 USB 서브 시스템보다 가장 HID 장치에 대한 커널 옵션 작품
Muriuki 데이비드

2

HIDRAW 장치 인 경우

chmod 0666 /dev/hidrawX

여기서 X는 숨겨진 장치 번호입니다 (예 : hidraw0). 넌 할 수있어

ls /dev/hid*

목록을 보려면 :) 아니면 그냥

sudo chmod 0666 /dev/hidraw*

모든 hidraw 장치에 대해 설정하는 것이 좋습니다.


2

우분투 18.04 업데이트 / 설명 :

Kees Cook의 대답은 가깝지만 18.04에서 작동하려면 2 가지 변경 사항이 필요합니다 (현재 릴리스 및이 테스트 한 것).

  1. lsusb로 idVendor 및 idProduct를 찾으십시오 .
    • 이것은 "ID"다음에 2 개의 16 진수 값이며 콜론으로 구분됩니다. 스캐너를 추가하고 있습니다. lsusb는 나에게 주었다 :
      버스 001 장치 011 : ID 04b8 : 014a Seiko Epson Corp. 
  2. 루트 로서 /etc/udev/rules.d에 파일을 추가하십시오
    • 50-usb-epsonscanner.rules 와 같은 것
    • 확장자는 ".rules"여야합니다.  
  3. 해당 파일에서 다음을 추가하십시오.
    SUBSYSTEM == "usb", ATTRS {idVendor} == "04b8", ATTR {idProduct} == "014a", MODE = "0666"
    그러나 idVendor 및 idProduct 16 진수 값으로.
    • "ATTR"이 아니라 "ATTRS"입니다.
  4. 재 로그인. 다시 부팅 할 필요가 없습니다.

ATTRS공급 업체 및 제품 ID 모두에 대해 그런 다음 코드 샘플이 잘못되었습니다 (두 줄을 나중에 언급 한 것처럼).
네오 포스트 모던

두 번째는 ATTR입니다. 여기서 작동합니다. 경고없이 변경 될 수있는 오류라고 생각합니다.
gatohaus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.