Pyusb / libusbがLinuxにroot(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
私の経験では、あなたがプラグインしているものに応じて。