Chcę wyłączyć urządzenia USB w oparciu o identyfikator dostawcy w środowisku Linux. Chcę zezwolić tylko na określone urządzenia USB, w oparciu o identyfikator dostawcy.
Chcę wyłączyć urządzenia USB w oparciu o identyfikator dostawcy w środowisku Linux. Chcę zezwolić tylko na określone urządzenia USB, w oparciu o identyfikator dostawcy.
Odpowiedzi:
Możesz utworzyć regułę udev, która domyślnie wyłącza urządzenia, ale włącza niektóre według identyfikatora dostawcy. Utwórz plik /etc/udev/rules.d/01-usblockdown.rules
zawierający regułę, aby wyłączyć urządzenia:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
A następnie reguły, aby włączyć urządzenia, na które chcesz zezwolić (możesz użyć, ATTR{idVendor}
aby uzyskać identyfikator dostawcy):
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
Aby uzyskać więcej informacji, zobacz „Blokowanie systemu Linux za pomocą UDEV” .
(mogłoby to być lepsze jako komentarz, ale brakuje mi punktów, więc rozwinąłem go w odpowiedź)
Przybyłem tutaj, szukając sposobu na zezwolenie na wszystkie urządzenia USB oprócz wyłączenia określonego przez producenta i identyfikator produktu. Jak wyłączyć urządzenie dźwiękowe USB z udev, odpowiada na to w przykładzie 0d8c: 000c.
Utwórz /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'"
Występuje rozbieżność między odpowiedzią a komentarzem poniżej w RUN=
porównaniu z RUN+=
, wypróbowałem tę pierwszą i działała dobrze.
Spodziewałem się, że dmesg lub lusb będą raportować inaczej, ale oba pokazują, że nieautoryzowane urządzenie jest wyliczane tak jak poprzednio, ale inne procesy / moduły, które uruchomiłyby się automatycznie, wydają się nie działać, co było pożądanym efektem. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(1-2.2 ... na przykład, które można znaleźć w dmesg) pokazuje, że 0 zostało umieszczone we właściwym miejscu.
ATTRS
(w liczbie mnogiej), a nie ATTR
podczas zapytania urządzeń udevadm
.