Wie kann ich udev dazu bringen, Massenspeicher zu akzeptieren und alles andere abzulehnen?

Wie kann ich udev dazu bringen, Massenspeicher zu akzeptieren und alles andere abzulehnen?

Ich versuche, eine Udev-Regel zu schreiben, die USB-Massenspeichergeräte zulässt, aber alles andere (Tastatur, Maus usw.) ablehnt. Ich habe das hier online gefunden:

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"

Ich habe dies in /etc/udev/rules.d/99-usb-unauth.rule gespeichert - mein Problem ist das Bit „CHECK FOR USB MASS STORAGE“, ich kann nicht herausfinden, was ich dort eingeben soll. Die Regel funktioniert einwandfrei, da ich dort andere Dinge wie Hersteller-/Produkt-IDs eingeben kann und sie funktionieren einwandfrei.

Ich habe SUBSYSTEM=="block", SUBSYSTEMS=="block" und alle möglichen anderen Schlüssel ausprobiert, udevadm info -a -p $(udevadm info -q path -n /dev/myDevNode)aber nichts scheint das Laufwerk zu akzeptieren.

Was mache ich falsch? Was kann ich kombinieren, um zu fangenalleMassenspeichergeräte? Es müssen alle sein, nicht nur ein bestimmtes.

Bearbeiten: Wenn ich mir das Udev-Protokoll anschaue, scheint es, als würde meine Regel zu schnell ausgeführt:

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

Meine Regel, beginnend mit 99-..., sollte sicherlich nicht ausgeführt werdendritte? Ich glaube, ich muss es später ausführen.

Eine weitere Bearbeitung: Ich denke also, das Problem ist, dass der Rest dieser Regel ausgewertet wird, sobald wir darüber hinaus sind SUBSYSTEM!="usb", GOTO="deauthorize_end"(d. h. SUBSYSTEM=="usb"), und ich kann von udevadm sehen, dass an diesem Punkt das USB-Subsystem nur "USB" ist, um "usb-storage" zu erhalten, muss es eine Ebene höher gehen. Gibt es eine Möglichkeit, das über die Regel zu tun?

verwandte Informationen