
권한이 부족하여 새로 설치된 Ubuntu에서 USB 장치를 열 수 없는 libusb 기반 프로그램이 있습니다.
이 솔루션아마 저에게는 효과가 있을 것입니다. 하지만 모든 장치를 수동으로 지정해야 합니다. 그리고 저는 꽤 많은 장치를 가지고 있습니다. 그래서 나는 이것을 (파일에서 /etc/udev/rules.d/41-cvs-permissions.rules
) 시도했습니다 :
SUBSYSTEM=="usb", MODE:="0666"
모든 장치에 규칙이 적용되기를 바라면서 VID와 PID를 생략했습니다. 분명히 효과가 있지만 효과는 다소 이상합니다. 열 수 없는 5개의 장치를 감지하는 대신 libusb는 이제 2개만 감지합니다. 둘 다 실제 장치가 아닌 USB 호스트 컨트롤러입니다.
내가 원하는 것을 달성하는 방법은 무엇입니까?
답변1
제가 USB 장치를 다루는 방식은 특정 그룹에게 모든 장치에 대한 액세스 권한을 부여하는 것입니다.
루트로서:
echo 'SUBSYSTEM=="usb", MODE="0660", GROUP="plugdev"' > /etc/udev/rules.d/00-usb-permissions.rules
udevadm control --reload-rules
기본적으로 이것이 수행하는 작업은 모든 USB 장치에 대한 읽기 및 쓰기 액세스 권한을 Plugdev 그룹의 구성원에게 부여하는 것입니다.
답변2
VID/PID를 사용하여 규칙 일치를 만드는 것이 확실한 해결책이 아니라는 데 동의합니다. 그러나 이전처럼 모든 USB 장치를 맹목적으로 타겟팅하지 않고도 동일한 규칙으로 여러 장치를 사용할 수 있습니다. 최소한의 정규식( , )을 사용하더라도 DRIVER
이름( usb-storage
, usbhid
,..) 또는 KERNEL
이름( tty*
, ,..)을 사용하는 예입니다 .sd*
sd[a-z][0-9]*
usb*
속성의 유사점을 찾아야 합니다.
- 해당 장치를 모두 제거하세요.
현재 장치 목록을 다음에 저장하십시오.
/dev
ls /dev > /tmp/dev_list0.txt
대상 장치 중 하나를 연결하십시오.
장치 목록을 다른 파일에 저장
ls /dev > /tmp/dev_list.txt
파일 비교,
>
장치 추가,<
제거 장치$ colordiff /tmp/dev_list0.txt /tmp/dev_list.txt 85a86,87 > sdc > serial 89a92,93 > sg4 > sg5 93a98 > sr1 194a200,201 > ttyUSB0 > ttyUSB1
이것은 3G 모뎀입니다.
필요한 모든 인터페이스의 속성을 확인하세요. 예:
udevadm info --attribute-walk --name=/dev/ttyUSB0
원하는 모든 장치에 대해 동일한 작업을 수행하십시오. 방법을 알 수 없는 경우 udevadm info --attribute-walk --name=...
출력을 업로드하고 질문에 연결하세요.
모든 USB 장치가 에서 노드를 생성하는 것은 아닙니다 /dev
. 일부는 SYSFS 트리에서 해당 항목을 찾습니다 /sys
. 그런 다음 다음을 사용하여 속성을 확인하십시오.--path
udevadm info --attribute-walk --path=...
위와 동일한 단계를 사용하면 udev
이벤트를 모니터링하여 생성된 장치 노드를 확인할 수 있습니다.
udevadm monitor
답변3
하드웨어에 대한 액세스를 잠금 해제하는 가장 쉬운 솔루션은 다음과 같습니다.
sudo chmod -R 777 /dev/bus/usb/