10

私は最近PyUSBをいじってみましたが、Linux(Ubuntuにはlibusb 0.1と1.0、およびOpenUSBがあります)で美しく動作することがわかりました...ただし、root権限でプログラムを実行した場合に限ります(sudoもちろん)。

昇格された特権が必要な理由、さらに重要なことに、通常のユーザーアカウントで機能するようにアクセス許可を変更できるかどうか、誰かに教えてもらえますか?

4

3 に答える 3

14

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

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

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

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

于 2011-12-20T21:46:46.203 に答える
7

私がここで与えた答えを参照してください:
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というファイルに入れます(ファイルの命名規則についてはman udevを調べてください)
注:古い命名規則では/etc/udev/rules.dが使用されていました/filename.rules、変更されました。

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

adduser username plugdev

3.udevシステムに変更を強制的に表示させます

sudo udevadm control --reload (つまり、マイナスマイナスリロード)
sudo udevadm trigger

4.デバイスを取り外して再接続するか、マシンを再起動します

最終的に、グループplugdevのすべてのメンバーがデバイスにアクセスできるようになります。

編集:一部のシステムでは、グループplugdevが必要なグループではない場合があることに注意してください。inputプラグを差し込んでいるものによっては、私の経験ではグループになることもあります。

于 2015-08-15T08:20:39.500 に答える
6

libusb任意のUSBデバイスを任意の方法で操作できます。たとえば、外付けUSBハードディスクをフォーマットできます。

一般に、すべての直接ハードウェアアクセスにはroot特権が必要ですが、実際には完全なroot特権は必要ないと思いますが、。だけで問題ありませんCAP_SYS_RAWIO

于 2010-09-17T20:31:56.733 に答える