LINUX.ORG.RU

avr программатор, как дать права на запись в usb?


1

1

Приветствую, подскажите, в какую группу добавить пользователя, чтобы появились права на запись в USB устройство. В данном случае я подцепляю AVR программатор, но при попытке залить прошивку он ругается мол у меня нет прав на устройство /dev/bus/usb/003/002.

Launching /usr/bin/avrdude -pm8 -cusbasp -P/dev/ttyUSB0 -b115200 -Uflash:w:avr_p1.hex:a 
Output:
libusb couldn't open USB device /dev/bus/usb/003/002: Permission denied.
libusb requires write access to USB device nodes.
avrdude: Warning: cannot open USB device: Permission denied
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
avrdude finished
Зашёл в каталог и дал права на запись
sudo chmod -R o+w  003/ 
и всё заработало, но я понимаю, что постоянно ручками не выход. Вроде как нужно включать пользователя в определённые группы, чтобы поиметь success с устройствами я добавил себя в diaout и uucp, также имеюсь в группе wheel, но как выяснилось, профита это мне не принесло. Ещё смотрю в сторону udev, но поглядев в папку rules.d, увидел что там правила для принтеров и для клавы, больше особо ничего нет, а своё правило я добавлять очкую, вдруг потом мышка с клавой отпадут О_о Чё делать?

P.S. Дистр Alt Linux Centaurus 6

★★★★★
Ответ на: комментарий от anonymous

Вот :)

[kirill@localhost usb]$ id kirill
uid=500(kirill) gid=500(kirill) группы=500(kirill),10(wheel),14(uucp),19(proc),22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),101(scanner),102(xgrp),106(camera),125(dialout)

[kirill@localhost usb]$ cat /etc/group
root:x:0:
bin:x:1:root
daemon:x:2:root
sys:x:3:root,bin,adm
adm:x:4:root
tty:x:5:
disk:x:6:root
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:root,kirill
firewall:x:11:
mail:x:12:
news:x:13:
uucp:x:14:kirill
man:x:15:
rpm:x:16:
console:x:17:
wnn:x:18:
proc:x:19:root,kirill
games:x:20:
slocate:x:21:
cdrom:x:22:kirill
squid:x:23:
chkpwd:x:24:
named:x:25:
shadow:x:26:
auth:x:27:
nscd:x:28:
rpcuser:x:29:
gopher:x:30:
netwatch:x:31:
rpc:x:32:
rpminst:x:33:
asterisk:x:34:
kqemu:x:35:
dip:x:40:
mailman:x:41:
postfix:x:42:
popa3d:x:43:
xfs:x:44:
mysql:x:45:
postgres:x:46:
gdm:x:47:
postman:x:48:
ftp:x:50:
ftpadmin:x:51:
cvs:x:52:
cvsadmin:x:53:
postdrop:x:54:
ldap:x:55:
loop:x:70:
floppy:x:71:kirill
utmp:x:72:
exim:x:79:
cdwriter:x:80:kirill
audio:x:81:kirill
x10:x:82:
radio:x:83:kirill
apache:x:96:
nobody:x:99:
users:x:100:
scanner:x:101:kirill
xgrp:x:102:kirill
sasl:x:103:
utempter:x:104:
_autoipd:x:105:
camera:x:106:kirill
iputils:x:107:
netadmin:x:108:
crontab:x:109:
messagebus:x:110:
bacula:x:111:
sshagent:x:112:
syslogd:x:113:
_alteratord:x:114:
_avahi:x:115:
fuse:x:116:
cuse:x:117:
ntpd:x:118:
_gnupg:x:119:
sshd:x:120:
_iftop:x:121:
tcpdump:x:122:
screen:x:123:
video:x:124:
dialout:x:125:kirill
tape:x:126:bacula
conshelp:x:127:
backupadmin:x:128:
kirill:x:500:
openvpn:x:36:
wine:x:37:
wineadmin:x:38:
xterro ★★★★★
() автор топика

Воткни программатор и посмотри какой пользователь и группа владеет устройством, а также права, командой ls -l /dev/bus/usb/003/002

imul ★★★★★
()
Ответ на: комментарий от xterro

Не ссы, пиши правило для udev

Пример для USB-сканеров у sane http://www.sane-project.org/README.linux

The device files used by libusb are located in /proc/bus/usb/ (e.g. /proc/bus/usb/001/003) or in /dev/bus/usb/ (e.g. /dev/bus/usb/001/003), if you use udev. The exact file name can be found out by running sane-find-scanner which would print «libusb:001:003» in this case. While setting permissions with e.g. «chmod a+rw /proc/bus/usb/001/003» works, this change is not permanent. The permissions will be reset when the scanner is replugged or Linux is rebooted.

One solution to set permissions on-the-fly is Linux udev which comes with current distributions.

SANE comes with a udev rules file in the tools/udev directory which may be used by distributions or can be copied to /etc/udev/rules.d manually. The file format is explained on top of the file itself.

anonymous
()
Ответ на: комментарий от imul

others писать не могут по умолчанию. Только группа и владелец

anonymous
()

Напиши правило для udev, которое при подключении программатора будет изменять права доступа к устройству так, чтобы ты мог в него писать. Все просто же!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от imul

Точно, недоглядел, то было после chmod -R o+w ... вот так до назначения прав

[kirill@localhost usb]$ ls -l /dev/bus/usb/003/002
crw-rw-r-- 1 root root 189, 257 Июл 12 23:26 /dev/bus/usb/003/002

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Мне тут ещё подумалось, вот сейчас при втыкании железки, оно подхватывается и монтируется, только прав нет. А если я ещё своё правило напишу, как это будет корелироваться с тем что уже есть?

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

ACTION!=«add», GOTO=«dev_support_rules_end»
SUBSYSTEM==«usb», ENV{DEVTYPE}==«usb_device», GOTO=«dev_support_init»
SUBSYSTEM!=«usb_device», GOTO=«dev_support_rules_end»

LABEL=«dev_support_init»

ATTR{idVendor}==«XXXX», ATTR{idProduct}==«YYYY», ENV{dev_model}=«$sysfs{product}», ENV{dev_test}=«yes»
ENV{dev_test}==«yes», RUN+=«chmod 666 '%k' &»

LABEL=«dev_support_rules_end»

Вместо XXXX и YYYY подставь идентификаторы производителя и устройства, которые покажет lsusb
Писалось на скорую руку, не факт, что нет ошибок и заработает сразу.

imul ★★★★★
()
Ответ на: комментарий от xterro

А если я ещё своё правило напишу, как это будет корелироваться с тем что уже есть?

Нормально всё будет.

imul ★★★★★
()
Ответ на: комментарий от imul

Очень криво. Надо

ATTR{idVendor}==«VID», ATTR{idProduct}==«PID», MODE:=«0664», GROUP:=«kirill» ...

На месте группы kirill можно отдельную группу вписать (предварительно её создав) и добавить в неё юзера kirill

anonymous
()
Ответ на: комментарий от xterro

Написал, сохранил как 10-usbasp.rules, переткнул железку, ничего не изменилось, что-то нужно перезапускать?

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Имхо лучше 99-usbasp.rules
Ещё я конечно сделал бы так:
ENV{dev_test}==«yes», RUN+=«/usr/local/bin/dev_init.sh '%k' &»
А уж в скрипте можно понапихать каких угодно команд. И изменение прав, и изменение владельца, и создание ссылок в /dev в любых произвольных вариациях.
%k — соответственно файл устройства и в скрипте будет виден как ${1} (скорее всего) без путей. Так что одну ошибку я уже нашёл. Нужно выяснить, что передаётся ядром в виде %k в правиле.

imul ★★★★★
()
Ответ на: комментарий от anonymous

Ты конечно прав. Твой вариант проще и значит надёжнее.

imul ★★★★★
()
Ответ на: комментарий от imul

Переименовал в 99-usbasp.rules, сейчас выглядит так:

ACTION!="add", GOTO="dev_support_rules_end"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GOTO="dev_support_init"
SUBSYSTEM!="usb_device", GOTO="dev_support_rules_end"

LABEL="dev_support_init"

ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE:="0664", GROUP:="kirill", ENV{dev_model}="$sysfs{product}", ENV{dev_test}="yes"

LABEL="dev_support_rules_end"[kirill@localhost rules.d]$ 

Похоже на правду?

xterro ★★★★★
() автор топика
Ответ на: комментарий от imul

О, теперь, после подключения железки, у меня стало:

crw-rw-r-- 1 root kirill 189, 261 Июл 13 00:11 006
И студия не ругается, похоже получилось. Всем спасибо :)

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

в udev-правиле записано сделать группой владельца группу `kirill `, в которую ты, kirill, входишь. Потому тебе можно читать девайс.

По хорошему надо создать группу usbasp, указать её в udev-правиле и сделать пользователя kirill её членом

anonymous
()
Ответ на: комментарий от anonymous

Потому тебе можно читать девайс.

Потому тебе можно и читать, и писать девайс.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.