LINUX.ORG.RU

История изменений

Исправление AITap, (текущая версия) :

При помощи udevadm info -q all -p <путь относительно /sys> определяете все необходимые параметры устройств, затем создаёте файл вида /etc/udev/rules.d/99-remove-unauthorized-usb.rules:

ACTION!="add", GOTO="dont_remove_usb"
ENV{ID_BUS}!="usb", GOTO="dont_remove_usb"
ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
...
ENV{ID_BUS}=="usb", RUN+="/usr/local/sbin/remove-usb.sh %E{DEVPATH}" # это правило выполнится, если не выполнится ни один из GOTO выше
LABEL="dont_remove_usb" # здесь окажутся доверенные и не-usb устройства
Где remove-usb.sh - это скрипт, который по DEVPATH (путь относительно /sys) находит в дереве директорий файл remove (например, для одного из моих жёстких дисков из DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb7/7-3/7-3:1.0/host10/target10:0:0/10:0:0:0/block/sdc получилось /sys/devices/pci0000:00/0000:00:1d.7/usb7/7-3/remove) и записывает туда 1.

Вроде бы, должно работать.

Исправление AITap, :

При помощи udevadm info -q all -p <путь относительно /sys> определяете все необходимые параметры устройств, затем создаёте файл вида /etc/udev/rules.d/99-remove-unauthorized-usb.rules:

ACTION!="add", GOTO="dont_remove_usb"
ENV{ID_BUS}!="usb", GOTO="dont_remove_usb"
ACTION=="add", ENV{ID_BUS}=="usb", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ACTION=="add", ENV{ID_BUS}=="usb", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ACTION=="add", ENV{ID_BUS}=="usb", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
...
ENV{ID_BUS}=="usb", RUN+="/usr/local/sbin/remove-usb.sh %E{DEVPATH}" # это правило выполнится, если не выполнится ни один из GOTO выше
LABEL="dont_remove_usb" # здесь окажутся доверенные и не-usb устройства
Где remove-usb.sh - это скрипт, который по DEVPATH (путь относительно /sys) находит в дереве директорий файл remove (например, для одного из моих жёстких дисков из DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb7/7-3/7-3:1.0/host10/target10:0:0/10:0:0:0/block/sdc получилось /sys/devices/pci0000:00/0000:00:1d.7/usb7/7-3/remove) и записывает туда 1.

Вроде бы, должно работать.

Исходная версия AITap, :

При помощи udevadm info -q all -p <путь относительно /sys> определяете все необходимые параметры устройств, затем создаёте файл вида /etc/udev/rules.d/99-remove-unauthorized-usb.rules:

ACTION!="add", GOTO="dont_remove_usb"
ENV{ID_BUS}!="usb", GOTO="dont_remove_usb"
ACTION=="add", BUS=="USB", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ACTION=="add", BUS=="USB", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
ACTION=="add", BUS=="USB", ENV{ID_SERIAL}=="...", GOTO="dont_remove_usb"
...
ENV{ID_BUS}=="usb", RUN+="/usr/local/sbin/remove-usb.sh %E{DEVPATH}" # это правило выполнится, если не выполнится ни один из GOTO выше
LABEL="dont_remove_usb" # здесь окажутся доверенные и не-usb устройства
Где remove-usb.sh - это скрипт, который по DEVPATH (путь относительно /sys) находит в дереве директорий файл remove (например, для одного из моих жёстких дисков из DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb7/7-3/7-3:1.0/host10/target10:0:0/10:0:0:0/block/sdc получилось /sys/devices/pci0000:00/0000:00:1d.7/usb7/7-3/remove) и записывает туда 1.

Вроде бы, должно работать.