セキュリティ上の理由から、特定のUSBポートで入力デバイスを使用できないようにしたいと思います。非入力機能(大容量記憶装置やttyUSBなど)がこのポートで使用可能である必要があります。入力デバイスは、他のUSBポートで引き続き機能している必要があります。
「使用できない」とは、たとえば対応する/dev/input/eventX
デバイスは作成されず、一般的なフレームワーク(X11、Linuxコンソール)はデバイスからの入力を受け入れません。
USBポートは次のようなudevルールで識別できます
DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7/2-1.7.1/*"
しかし、それを無効にする方法がわかりません。
古いudevバージョンはOPTIONS+="ignore_device"
をサポートしていましたが、このオプションはなくなりました。
これどうやってするの?
入力デバイスの可能なタイプごとにルールを作成する必要があります。
ルールで、その名前の環境変数が空でないことをテストします。たとえば、少なくとも1つの文字がある場合にのみ一致するグロブパターン?*
と一致させます。例えば:
ENV{ID_INPUT_KEYBOARD}=="?*"
各ルールで、一致する場合は、デバイスのauthorized
属性を0に設定します。例:
ATTR{authorized}="0"
=
を:=
に置き換えて、後のルールで上書きできないようにすることをお勧めします。これにより、次の一般的なルールが得られます。
ACTION=="add", DEVPATH=="...", ENV{ID_INPUT_KEYBOARD}=="?*", ATTR{authorized}:="0"
このプレゼンテーション AdrianCrenshawによるを参照してください。