Linux環境でベンダーIDに基づいてUSBデバイスを無効にする方法は?

Linux環境でベンダーIDに基づいてUSBデバイスを無効にする方法は?

Linux環境では、ベンダーIDに基づいてUSBデバイスを無効にしたいと思います。ベンダーIDに基づいて特定のUSBデバイスのみを許可したいと思います。

答え1

デフォルトでは、デバイスを無効にしますが、ベンダーIDによって特定のデバイスを有効にするudevルールを作成できます。/etc/udev/rules.d/01-usblockdown.rulesデバイス無効化ルールを含むファイルを作成します。

ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"

次に、許可するデバイスのルールを有効にします。次のATTR{idVendor}方法でベンダーIDを取得できます。

ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

バラより「UDEVでLinuxをロックする」より多くの情報を知りたいです。

答え2

(これはコメントとしてうまく機能するかもしれませんが、要点が不足して回答に拡張しています)

ベンダーと製品IDによって特定のデバイスを無効にすることを除いて、すべてのUSBデバイスを許可する方法を見つけるためにここに来ました。 udevを使用してUSBサウンドデバイスを無効にする方法返信0d8c:000cはい。

作る/etc/udev/rules.d/disable-usb-device.rules

ACTION=="add", ATTR{idVendor}=="0d8c", ATTR{idProduct}=="000c", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"

答えと以下の説明に違いがありますRUN=RUN+=前者を試してみましたが、うまくいきました。

dmesgまたはlusbが別々に報告すると予想していましたが、どちらも以前のように承認されていないデバイスが列挙されているとマークされていますが、他のプロセス/モジュールは自動的に起動しません。これは予想される効果です。cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized(例:1-2.2 ...はdmesgにあります)0が正しい位置に配置されていることを示します。

答え3

これはUbuntu 20.04で私にとって効果的でした。

$ cat /etc/udev/rules.d/81-elan-fingerprint.rules
# ID 04f3:0c28 Elan Microelectronics Corp. ELAN:Fingerprint should be disabled
ACTION=="add", ATTR{idVendor}=="04f3", ATTR{idProduct}=="0c28", RUN="/bin/sh -c 'echo 1 >/sys/\$devpath/remove'"

これにより、USBデバイスを接続するとすぐに取り外して使用できなくなります。 "ATTR {idProduct} == "0c28""を削除すると、そのベンダーのすべてのデバイスに対して同じ操作を実行する必要があります。

関連情報