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


21

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

今、私はこれに適用されるすべての既存のルールを(私は「hidraw」のためにgrepped見つけるのトラブルを抱えている/lib/udev/rules.dし、/etc/udev/rules.dとりわけ、)。

回答:


21

通常、これは次のような内容で/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"は、一致するbInterfaceClassもの03(HID)に置き換えることができます。

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

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


4
ubuntu 14.04では、コロンなしでMODE:= "0666"を使用する必要があり、ルールは何もしません。
エドウィンW

2
14.04では、このファイルには.rules拡張子が必要です。.conf拡張子を持つファイルは機能しません。
チェルノ

1
lsusb -vvvidProductとidVendorの取得に使用
Xavier13

2
この質問はGoogleの出力で非常に人気があるので... ATTRではなくATTRSであるべきだと思う-少なくともこの変更はそれを修正してくれた。
infthi

2
14.04.5 LTSで私は見つけました:lsusb接続されているものとIDを見るには良いスタートです。idVendorそしてidProduct試合は思え大文字と小文字を区別 IDはので、DA77私のために動作しませんが、da77ありません。(便利な診断: udevadm info --attribute-walk /dev/bus/usb/008/023バス008デバイス023私の例; lsusbあなたのため。)ルールを追加したsudo udevadm control --reload-rulessudo udevadm trigger、再起動を回避:変更は数秒です。ATTRとATTRSは対立しませんでした。マイ.rulesファイルが読み取りますSUBSYSTEM=="usb", ATTR{idVendor}=="da77", ATTR{idProduct}=="d12e", GROUP="users", MODE="0666"
エルゾルコ

7

要約だけ:

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

  • 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にアクセスできます

詳細については、ドキュメントをご覧ください。


2
:=比較用ではありません。ドキュメントには、「最後にキーに値を割り当て、その後の変更は許可しない」と書かれています。
ルーカス

5

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

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

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


うん、カーネルオプションは、より良いUSBサブシステムよりも、ほとんどのHIDデバイスのために働く
Muriukiデビッド・

2

HIDRAWデバイスの場合、

chmod 0666 /dev/hidrawX

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

ls /dev/hid*

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

sudo chmod 0666 /dev/hidraw*

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


2

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

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

  1. であなたのidVendorとidProductを探すlsusbが
    • これは、コロンで区切られた「ID」の後の2つの16進値になります。スキャナーを追加しています。lsusbは私にくれました:
      バス001デバイス011:ID 04b8:014a Seiko Epson Corp. 
  2. ルートとして/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. 再ログイン。再起動する必要はありません。

ATTRSベンダーIDとプロダクトIDの両方ですか?次に、コードサンプルが間違っています(2行後に記述したように)。
ネオポストモダン

2つ目はATTRです。ここで動作します。警告なしに変更される可能性があるエラーだと推測しています。
ガトハウス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.