Linux 환경에서 공급 업체 ID를 기반으로 USB 장치를 비활성화하는 방법은 무엇입니까?


11

Linux 환경에서 공급 업체 ID를 기반으로 USB 장치를 비활성화하고 싶습니다. 공급 업체 ID를 기준으로 특정 USB 장치 만 허용하고 싶습니다.


Linux에서 USB / PEN 드라이브를 차단하는 방법 (kali linux) grprajapat.blogspot.in/2014/09/…

cdc_acm을 사용하지 않으려는 특정 공급 업체 : 장치 ID가 하나 있습니다. 나는 이것을 별도의 질문으로 만들었습니다 .
mirabilos

답변:


10

기본적으로 장치를 비활성화하지만 벤더 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 잠금" 을 참조하십시오.


위의 명령으로 충분하거나 udevadm 트리거를 수행해야합니다.
subbarao

스테판 안녕하세요, 특정 pendrive를 허용하기 위해 두 규칙을 모두 추가해야합니까?
subbarao

@subbarao 네, 두 규칙을 모두 추가해야합니다. 첫 번째는 기본값마다 모든 것을 차단하고 두 번째는 특정 장치를 허용합니다.
DBX12

시스템이 부팅되면 키보드와 같은 플러그를 꽂을 때 작동합니다. 그러나 키보드가 연결되어 있고 재부팅하면 OS 부팅시 키보드가 작동합니다. 키보드를 분리했다가 다시 연결하면 키보드가 예상대로 작동하지 않습니다. 부팅 장치를 활성화하기 전에이 규칙을 실행할 수있는 수준이 더 낮은 영역이 있습니까?
ScottN

3

(이것은 의견으로 더 좋았을 수도 있지만 포인트가 부족하여 답변으로 확장되었습니다)

여기에 공급 업체 및 제품 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(예를 들어 dmesg에서 찾을 수있는 1-2.2 ...)는 0이 올바른 위치에 놓 였음을 보여줍니다.


udev에서 중간에 일부 변경 사항이 있었는지 모르겠지만 요즘은 속성을 ATTRS(복수)로 지정하고로 ATTR장치를 쿼리 할 때가 아닙니다 udevadm.
Baptiste Mille-Mathias
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.