无论组或权限如何,没有 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

USB 设备的低级控制是通过 完成的/dev/bus/usb,您需要在设备上设置正确的权限。做到这一点的方法是使用 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-reloadsystemctl reload udev)。下次拔下/重新插入编程器时,新权限应该生效。

相关内容