Pyusb / libusbがLinuxにroot(sudo)権限を必要とするのはなぜですか?

StackOverflow https://stackoverflow.com/questions/3738173

  •  03-10-2019
  •  | 
  •  

質問

私は一緒にいじっていました pyusb 最近、それがLinuxで美しく機能することがわかりました(ubuntuは持っています libusb 0.1および1.0、および OpenUSB)...しかし、ルート特権でプログラムを実行した場合のみ(で sudo, 、 もちろん)。

なぜ高度な特権を必要とするのか、そしてさらに重要なことに、何らかの形でそれを通常のユーザーアカウントで機能させることができるのか、より重要なことは、誰かを教えてもらえますか?

役に立ちましたか?

解決

libusb 任意の方法で任意のUSBデバイスを操作できます。たとえば、外部USB HardDiskをフォーマットできます。

一般に、すべての直接ハードウェアアクセスに必要です root 特権、それは実際にはいっぱいだと思います root 特権は必要ありません、あなたはただ大丈夫でなければなりません CAP_SYS_RAWIO.

他のヒント

UDEVルールを作成して、USBデバイスノードの権限を変更できます。たとえば、次の行をのファイルに追加しました /etc/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usbusers"

これにより、デバイスノードの所有者がに設定されます root:usbusers それよりも root:root

に自分自身を追加した後 usbusers グループ、デバイスにアクセスできます。

私がここで与えた答えを見てください:
Pyusbを使用してこのデバイスと同意するにはどうすればよいですか?

すなわち:
通常のユーザーにアクセスできるようにする特定のデバイスのUDEVルールファイルを設定します。これにより、ベンダーID、製品ID、およびグループが定義されます。
ベンダーと製品IDは lsusb 指図。

1. udevルールファイルを作成します

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="171b", ATTRS{idProduct}=="2001", MODE="660", GROUP="plugdev"

これを(たとえば)/lib/udev/rules.d/50-yoursoftwarename.rulesというファイルに入れます(ファイルの命名ルールについては、udevを掘ります)
注:使用されている古い命名規則/udev/rules.d/filename.rulesが変更されました。

2.ユーザー名をPlugDevグループに追加します

adduser username plugdev

3. UDEVシステムに変更を強制します

sudo udevadm control --reload (それはマイナスリロードを引いたマイナスです)
sudo udevadm trigger

4.デバイスのプラグを抜くか、マシンを再起動する

最終結果は、グループPlugDevのすべてのメンバーがデバイスにアクセスできるようになることです。

編集:一部のシステムでは、グループがグループに注意してください plugdev あなたが必要とするグループではないかもしれません。グループになることもできます input 私の経験では、あなたがプラグインしているものに応じて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top