¿Cómo puedo hacer que udev acepte almacenamiento masivo y rechace todo lo demás?

¿Cómo puedo hacer que udev acepte almacenamiento masivo y rechace todo lo demás?

Estoy intentando escribir una regla udev para permitir dispositivos de almacenamiento masivo USB pero rechazar cualquier otra cosa (teclado, mouse, etc.). Encontré esto en línea:

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"

Tengo esto guardado en /etc/udev/rules.d/99-usb-unauth.rule; mi problema es el bit VERIFICAR EL ALMACENAMIENTO MASIVO USB, no sé qué poner allí. La regla funciona bien porque puedo poner otras cosas allí, como ID de proveedor/producto, y funcionan bien.

Probé SUBSYSTEM=="block", SUBSYSTEMS=="block" y todo tipo de otras claves encontradas, udevadm info -a -p $(udevadm info -q path -n /dev/myDevNode)pero nada parece hacer que acepte la unidad.

¿Qué estoy haciendo mal? ¿Con qué puedo coincidir para atrapar?tododispositivos de almacenamiento masivo? Tiene que ser todo, no sólo uno específico.

Editar: Al mirar el registro de udev, parece que mi regla se está ejecutando demasiado pronto:

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

Seguramente mi regla, que comienza con 99-... no debería ejecutarsetercero? Creo que necesito que se ejecute más tarde.

Otra edición: Entonces creo que el problema es que tan pronto como pasamos SUBSYSTEM!="usb", GOTO="deauthorize_end"(es decir, SUBSYSTEM=="usb") se evalúa el resto de esta regla, y puedo ver en udevadm que en ese punto el subsistema USB es simplemente "USB". para obtener "almacenamiento USB", es necesario subir un nivel. ¿Hay alguna manera de hacerlo desde la regla?

información relacionada