グループや権限に関係なく root 権限がないと、プログラムを実行できません。

グループや権限に関係なく root 権限がないと、プログラムを実行できません。

avrdudeターゲットマイクロコントローラにプログラムをダウンロードできる簡単なツールです。完全性のために私が実行したいコマンドは次のとおりです。

avrdude -p atmega328p -c usbtiny -P usb -v -U -flash:w:program.hex

このコマンドを実行するたびにエラーが発生し、それを機能させるには'Operation not permitted"このコマンドを実行する必要があります。sudo avrdude ..このようにする必要性を変に感じたので、問題を深く掘り下げました。

私が使用しているプログラマーは自分でインストールして/dev/ttyUSB0グループの一部になりますdialout。また、デバイスには、dialoutグループ内のすべてのユーザーがデバイスに書き込む権限があり、これは上記のコマンドが実行する操作です。

crw-rw----  1 root dialout   188,   0 Jul 15 02:04 ttyUSB0

しかし、root持つデバイスをダイヤルアウトグループに追加するだけでデバイスを使用できるようです。これをやった後まだエラーが発生しました"Operation not permitted"

それからavrdudeプログラム自体の問題ではないかという考えがありました。バイナリを見つけた後、/usr/binファイルに対する権限を考慮すると、これは問題ではないことが明らかになりました。

-rwxr-xr-x 1 root root 413888 Oct 21 2013 avrdude

長すぎます。私は適切なグループに属し、ファイルにはそのファイルを使用する権限がありますが、最初に自分の権限を上げないと、そのファイルは使用できません。

ベストアンサー1

/dev/bus/usbUSBデバイスの低レベル制御は、デバイスの正しい権限を設定することによって行われます。これを行う方法は、udevルールを使用することです。

次のコマンド(例/etc/udev/rules.d/52_local-usbtiny.rules:)を使用してファイルを生成します。

SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", MODE="664", GROUP="plugdev"

これでグループがに設定されます。これを使用して所有者を設定plugdevできます。USER="your-user-name"

次に、udev(たとえば、service udev force-reloadまたはsystemctl reload udev)を再ロードします。新しい権限は、次にプログラマを切り離して再接続するときに適用されます。

おすすめ記事