@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как через udev блокировать определенные устройства, но запрещать остальные?

Хочу научиться блокировать различные виды usb устройств с помощью udev.
Примеры кейсов:
1)Заблокировать все устройства, кроме клавиатур и мышек.
2)Разрешать фиксированный набор usb-носителей, разрешить любую клавиатуру/мышь, все остальные устройства запретить.
3)Запретить любые сетевые адаптеры (ethernet, wifi)

пока что умею писать только такое правило, запрещающее всё, кроме конкретной клавиатуры (idVendor и idProduct взял из lsusb):

SUBSYSTEM=="usb", ATTR{idVendor}!="1c4f", ATTR{idProduct}!="0002", ENV(ID_SERIAL)!="EM_HCT_Keyboard",  ATTR{authorized}="0"


как мне переделать это правило, чтобы разрешало любые клавиатуры?

В гугле нашел следующие примеры:

#type:usb-storage
ACTION!="add", GOTO="dont_remove_usb"
ENV{DRIVER}!="usb-storage", GOTO="dont_remove_usb"
ENV{DRIVER}=="usb-storage", ATTR{authorized}="0"
LABEL="dont_remove_usb"

#type:usb-modems
ACTION!="add", GOTO="dont_remove_usb"
DRIVER!="rndis_host", GOTO="dont_remove_usb"
DRIVER=="rndis_host", ATTR{authorized}="0"
LABEL="dont_remove_usb"

#type:gphoto2
ACTION!="add", GOTO="dont_remove_usb"
ENV{GPHOTO2_DRIVER}!="PTP",GOTO="dont_remove_usb"
ENV{GPHOTO2_DRIVER}=="PTP",ATTR{authorized}="0"
LABEL="dont_remove_usb"


но моя флешка нифига не ENV{DRIVER}=="usb-storage"
и мой wifi-свисток нифига не DRIVER=="rndis_host":

Bus 007 Device 002: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
# udevadm info /dev/bus/usb/007/002 | grep DRIVER
E: DRIVER=usb
E: DEVTYPE=usb_device
# udevadm info -a  /dev/bus/usb/007/002 | grep SUBSYSTEM
    SUBSYSTEM=="usb"
    SUBSYSTEMS=="usb"
    SUBSYSTEMS=="platform"
    SUBSYSTEMS=="platform"
    SUBSYSTEMS==""


Bus 004 Device 003: ID 0cf3:9271 Qualcomm Atheros Communications AR9271 802.11n
udevadm info -a /dev/bus/usb/004/003 | grep DRIVER
    DRIVER=="usb"
    DRIVERS=="usb"
    DRIVERS=="ehci-platform"
    DRIVERS=="simple-pm-bus"
    DRIVERS==""
udevadm info -e /dev/bus/usb/004/003 | grep DRIVER
E: DRIVER=simple-framebuffer
E: DRIVER=display-connector
E: DRIVER=cpufreq-dt
E: DRIVER=sun4i-drm
E: DRIVER=kgdboc
E: DRIVER=leds-gpio
E: DRIVER=armv8-pmu
E: DRIVER=reg-dummy
E: DRIVER=serial8250
E: DRIVER=snd-soc-dummy
E: DRIVER=simple-pm-bus
E: DRIVER=sunxi-de2-clks
E: DRIVER=sun8i-mixer
E: DRIVER=sunxi-sram
E: DRIVER=sram
E: DRIVER=sram
(туту огромный список, не стал вставлять )
  • Вопрос задан
  • 878 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы