Linux 환경에서 공급업체 ID를 기반으로 USB 장치를 비활성화하고 싶습니다. 공급업체 ID를 기반으로 특정 USB 장치만 허용하고 싶습니다.
답변1
기본적으로 장치를 비활성화하지만 공급업체 ID별로 특정 장치를 활성화하는 udev 규칙을 생성할 수 있습니다. /etc/udev/rules.d/01-usblockdown.rules
장치 비활성화 규칙이 포함된 파일을 만듭니다 .
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
그런 다음 허용하려는 장치에 대한 규칙을 활성화합니다. 다음을 ATTR{idVendor}
통해 공급업체 ID를 얻을 수 있습니다.
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
바라보다"UDEV로 Linux를 잠그세요"더 많은 정보를 알고 싶습니다.
답변2
(이것은 주석으로 더 잘 작동할 수 있지만 요점이 부족하여 답변으로 확장하고 있습니다)
공급업체 및 제품 ID별로 특정 장치를 비활성화하는 것을 제외하고 모든 USB 장치를 허용하는 방법을 찾기 위해 여기에 왔습니다. udev를 사용하여 USB 사운드 장치를 비활성화하는 방법대답 0d8c:000c 예.
만들다 /etc/udev/rules.d/disable-usb-device.rules
:
ACTION=="add", ATTR{idVendor}=="0d8c", ATTR{idProduct}=="000c", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"
답변과 아래 설명에 차이가 있습니다 RUN=
. RUN+=
전자를 시도했는데 훌륭하게 작동했습니다.
dmesg 또는 lusb가 다르게 보고할 것으로 예상했지만 둘 다 이전과 같이 승인되지 않은 장치가 열거되는 것으로 표시되지만 자동 시작되는 다른 프로세스/모듈은 실행되지 않는 것 같습니다. 이는 예상된 효과입니다. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(예: 1-2.2...는 dmesg에서 찾을 수 있음) 0이 올바른 위치에 배치되었음을 나타냅니다.
답변3
이것은 Ubuntu 20.04에서 저에게 효과적이었습니다.
$ cat /etc/udev/rules.d/81-elan-fingerprint.rules
# ID 04f3:0c28 Elan Microelectronics Corp. ELAN:Fingerprint should be disabled
ACTION=="add", ATTR{idVendor}=="04f3", ATTR{idProduct}=="0c28", RUN="/bin/sh -c 'echo 1 >/sys/\$devpath/remove'"
이렇게 하면 USB 장치를 연결하자마자 제거되므로 사용할 수 없게 됩니다. "ATTR {idProduct} == "0c28""을 제거하면 해당 공급업체의 모든 장치에 대해 동일한 작업을 수행해야 합니다.