USB 대용량 저장 장치를 허용하지만 다른 장치(키보드, 마우스 등)는 거부하는 udev 규칙을 작성하려고 합니다. 나는 이것을 온라인에서 찾았습니다:
ACTION!="add", GOTO="deauthorize_end"
SUBSYSTEM!="usb", GOTO="deauthorize_end"
TEST!="authorized", GOTO="deauthorize_end"
## make hubs deauthorize all devices by default
TEST=="authorized_default", ATTR{authorized_default}="0", GOTO="deauthorize_end"
## CHECK FOR USB MASS STORAGE HERE
SOMETHING=="something", ENV{valid}="1"
## authorize matched devices, warn about the rest
ENV{valid}=="1", ENV{valid}="", ATTR{authorized}="1", GOTO="deauthorize_end"
RUN+="/usr/local/bin/usb-unauth $devpath"
LABEL="deauthorize_end"
나는 이것을 /etc/udev/rules.d/99-usb-unauth.rule에 저장했습니다. 내 문제는 CHECK FOR USB MASS STORAGE 비트이므로 거기에 무엇을 넣을지 알 수 없습니다. 공급업체/제품 ID와 같은 다른 항목을 거기에 넣을 수 있고 제대로 작동하기 때문에 규칙은 제대로 작동합니다.
SUBSYSTEM=="block", SUBSYSTEMS=="block" 및 기타 모든 종류의 키를 사용해 보았 udevadm info -a -p $(udevadm info -q path -n /dev/myDevNode)
으나 드라이브를 허용하지 않는 것 같습니다.
내가 도대체 뭘 잘못하고있는 겁니까? 무엇을 맞춰서 잡을 수 있나요?모두대용량 저장 장치? 특정한 것이 아니라 전체가 되어야 합니다.
편집하다: udev 로그를 보면 내 규칙이 너무 빨리 실행되는 것 같습니다.
set children_max to 16
validate module index
Check if link configuration needs reloading.
seq 2693 queued, 'add' 'usb'
seq 2693 forked new worker [26127]
seq 2693 running
no db file to read /run/udev/data/c189:224: No such file or directory
device 0xb77b68e0 has devpath '/devices/pci0000:00/0000:00:1d.0/usb2/2-1'
device 0xb77b6c90 has devpath '/devices/pci0000:00/0000:00:1d.0/usb2'
device 0xb77b7040 has devpath '/devices/pci0000:00/0000:00:1d.0'
device 0xb77b72c8 has devpath '/devices/pci0000:00'
IMPORT builtin 'usb_id' /lib/udev/rules.d/50-udev-default.rules:9
IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:9
MODE 0664 /lib/udev/rules.d/50-udev-default.rules:41
ATTR '/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/authorized' writing '1' /etc/udev/rules.d/99-usb-deauth.rules:21
확실히 99-...로 시작하는 내 규칙은 실행되어서는 안 됩니다.제삼? 나중에 실행해야 할 것 같아요.
또 다른 편집: 그래서 문제는 우리가 통과하자마자 SUBSYSTEM!="usb", GOTO="deauthorize_end"
(예: SUBSYSTEM=="usb") 이 규칙의 나머지 부분이 평가되고 udevadm에서 그 시점에서 usb 하위 시스템이 단지 "USB"라는 것을 알 수 있다는 것입니다. "USB 저장소"를 얻으려면 한 수준 위로 올라가야 합니다. 규칙에서 그렇게 할 수 있는 방법이 있나요?