web-dev-qa-db-ja.com

USB HIDデバイスの権限を変更するためにudevを構成しますか?

USBスケール、USB HIDがあります。現在、プラグインが接続されている場合、アクセス許可ではスーパーユーザーのみがアクセスできます。誰でもこのデバイスにアクセスできるようにudevを設定するにはどうすればよいですか?ベンダーIDと製品IDがありますが、代わりにHIDタイプに基づいて一致させたいと思います。

現時点では、これに適用される既存のルールを見つけるのに問題があります(/lib/udev/rules.dおよび/etc/udev/rules.dの "hidraw"を他のものと区別しました)。

20
erjiang

通常、これは/etc/udev/rules.dに次のような内容の50-usb-scale.confという名前のファイルを追加することで行われます。

SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"

HEX1HEX2は、それぞれベンダーと製品IDに置き換えられます。

代わりにインターフェイスタイプで一致するには、ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"03(HID)であるbInterfaceClassの一致に置き換えることができます。

SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"

ただし、マウスとキーボードもキャッチされることに注意してください。

19
Kees Cook

要約だけ:

以下をフィルタリングできます。

  • idVendor
  • idProduct
  • シリアル

そして使用:

==等しいかどうかを比較します。

!=不等式を比較します。

=キーに値を割り当てます。リストを表すキーはリセットされ、この単一の値のみが割り当てられます。

+ =エントリのリストを保持するキーに値を追加します。

:=最後にキーに値を割り当てます。後の変更を禁止します。

/ dev/...で特定のデバイスに特定の新しいパスを指定できます。
例:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"

結果:

デバイスにアクセスするには、「/ dev/hiddevx」または「/ dev/myhid」を使用して簡単にアクセスできます。グループ「cdrom」のすべてのユーザーがデバイスから読み取ることができます。所有者「user28」は読み書きできます。

または最も単純な:

KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"

結果:すべてのユーザーはベンダー0x16c0からすべてのhiddeviceにアクセスできます

詳細については、以下を参照してください: Docs

6
rundekugel

(私のように)ttyACM0パーミッションを変更する必要がある場合、これは私の設定です:

KERNEL=="ttyACM0", MODE="0777"

ベンダーと製品IDを指定しようとすると失敗しました。理由はわかりません。

5
Rodo

Ubuntu 18.04アップデート/説明:

Kees Cookの答えは近いですが、18.04で機能するために2つの変更が必要です(現在のリリースで、これをテストしたのは1つだけです)。

  1. lsusb。でidVendorとidProductを見つけます。
    • これは、コロンで区切られた「ID」の後の2つの16進値になります。スキャナーを追加しています。 lsusbがくれた:
      バス001デバイス011:ID 04b8:014a Seiko Epson Corp. 
  2. rootにファイルを追加/ etc/udev/rules.d
    • 50-usb-epsonscanner.rulesのようなもの
    • 拡張子は「.rules」でなければなりません
  3. そのファイルに以下を追加します。
    SUBSYSTEM == "usb"、ATTRS {idVendor} == "04b8"、ATTR {idProduct} == "014a"、MODE = "0666"
    ただし、idVendorおよびidProductの16進値は使用します。
    • 「ATTR」ではなく「ATTRS」であることに注意してください。
  4. 再ログイン。再起動する必要はありません。
2
gatohaus

HIDRAWデバイスの場合、

chmod 0666 /dev/hidrawX

ここで、Xは非表示のデバイス番号です(例:hidraw0)。できるよ

ls /dev/hid*

リストを表示するには:)または単に

Sudo chmod 0666 /dev/hidraw*

すべてのhidrawデバイスに設定するには、おそらく推奨されません。

2
Muriuki David