udevが一括ストレージを許可し、他のすべてを拒否するにはどうすればよいですか?

udevが一括ストレージを許可し、他のすべてを拒否するにはどうすればよいですか?

USB大容量ストレージデバイスは許可しますが、他のデバイス(キーボード、マウスなど)は拒否するudevルールを作成しようとしています。私はこれをオンラインで見つけました:

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"

/etc/udev/rules.d/99-usb-unauth.ruleにあります。私の問題は、USB大容量記憶ビットをチェックすることです。そこに何を入れるべきかわかりません。このルールは、ベンダー/製品IDなどの他のアイテムを配置できるため、うまく機能します。

SUBSYSTEM=="block"、SUBSYSTEMS=="block"、および使用されている他のさまざまなキーを試しましたが、udevadm info -a -p $(udevadm info -q path -n /dev/myDevNode)ドライブを許可するために何もないようです。

私は何が間違っていましたか?何をマッチさせてキャプチャできますか?みんな大容量記憶装置?特定のものだけでなく、すべてになるはずです。

編集する:udev ログを見ると、私のルールが速すぎるように見えます。

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

もちろん、99-...から始まる私のルールは実行されてはいけません。第三?後で実行する必要があると思います。

他の編集者:だから問題は、私たちが渡すとSUBSYSTEM!="usb", GOTO="deauthorize_end"(例えば、SUBSYSTEM == "usb")、ルールの残りの部分が評価され、udevadmでこの時点でusbサブシステムが "usb"を取得するために "usb"であることがわかるということです。 。ストレージ」をさらに一歩上げる必要があります。規制に従って行う方法はありますか?

関連情報