그룹이나 권한에 관계없이 루트 권한이 없으면 프로그램을 실행할 수 없습니다.

그룹이나 권한에 관계없이 루트 권한이 없으면 프로그램을 실행할 수 없습니다.

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)를 다시 로드합니다. 새로운 권한은 다음에 프로그래머를 분리했다가 다시 연결할 때 적용됩니다.

관련 정보