Warum funktioniert Avrdude ohne udev Rules?

OP #8101919
Lesenswert?
• ▲
▼

Die Device gehören root.root mit Permissions 0660. Ich bin weder root noch in der Gruppe root.

Meine Versuche, davon (mit cat Befehl) zu lesen wurden verweigert. Avrdude funktioniert aber trotzdem.

Wenn ich die gewohnten udev Rules anlege, dann haben die Device 0666 (so steht das in den Rules). Ich habe mir also ganz sicher die richtigen Device angeschaut.

: Bearbeitet durch User
#8101983
Lesenswert?
• ▲
▼

Jörg W. schrieb:

Schau doch mal, was die Devices als Berechtigung haben. Vielleicht hat ja jemand die udev-Regeln für die Atmel-Tools bereits in die reguläre distribution mit aufgenommen?

Seit Bullseye oder noch länger liefert das Paket avrdude udev-Regeln für über 50 Geräte mit. Die Datei ist heute immer noch die gleiche (aber bei udev weiß man ja nie...).

Moritz L. schrieb:

Die Device gehören root.root mit Permissions 0660. Ich bin weder root noch in der Gruppe root.

Meine /dev/ttyUSB* gehören root:dialout; ohne avrdude und auf ziemlich originalem Debian Bookworm und Forky.

OP #8101995
Lesenswert?
• ▲
▼

Danke für eure Anregungen. Genau solche Antworten hatte ich mir erhofft.

Mein Avrdude hat kein suid Bit.

Mir ist ein kleines Detail aufgefallen:

1
root@desktop:/dev/bus/usb/001# ls -l
2
insgesamt 0
3
crw-rw-r--  1 root root 189, 0  7. Okt 06:54 001
4
crw-rw-r--  1 root root 189, 3  7. Okt 06:54 004
5
crw-rw-r--  1 root root 189, 4  7. Okt 16:05 005
6
crw-rw-r--+ 1 root root 189, 5  7. Okt 16:06 006
7
crw-rw-r--+ 1 root root 189, 6  7. Okt 16:07 007

Die unteren beiden sind Programmieradapter. Das "+" hat hier offenbar etwas zu bedeuten (erweiterte Zugriffsrechte?). Von einer udev Regel kommt das aber nicht. Woher könnte es sonst kommen?

Bauform B. schrieb:

Seit Bullseye oder noch länger liefert das Paket avrdude udev-Regeln für über 50 Geräte mit.

Das wird es wohl sein. Ich habe gerade mal avrdude deinstalliert. Jetzt ist das + weg und wenn ich jetzt eine andere Binary von avrdude aufrufe kommt die erwartete Fehlermeldung

Warning: cannot open USB device: Permission denied

Dann schaue ich mal nach, wo diese 50 Rules liegen...

: Bearbeitet durch User
#8102017
Lesenswert?
• ▲
▼

Moritz L. schrieb:

Ich wusste nicht, dass udev Rules auch dort liegen können. Mal wieder was dazu gelernt.

Jörg W. schrieb:

Und die setzt ACLs, statt auf Basis von Gruppenrechten zu arbeiten? Cool.

Macht sie schon seit Ewigkeiten:

1
~$ find /lib/udev -iname "*dude*"
2
/lib/udev/rules.d/60-avrdude.rules

Hier in OldOldStable Debian 11:

1
~$ cat $( find /lib/udev -iname "*dude*" )|egrep -i -n3 "USBasp|AVRISPmkII"
2
94-SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2fff", TAG+="uaccess"
3
95-# PICkit2
4
96-SUBSYSTEM=="usb", ATTR{idVendor}=="04d8", ATTR{idProduct}=="0033", TAG+="uaccess"
5
97:# USBasp
6
98-SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", TAG+="uaccess"
7
99-# NIBObee
8
100-SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="092f", TAG+="uaccess"
: Bearbeitet durch User
Moderator Persönliche Seite #8102025
Lesenswert?
• ▲
▼

Norbert schrieb:

94-SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2fff", TAG+="uaccess"

Und wie löst dieser TAG jetzt in ACLs auf? Da werde ich aus der man page nicht schlau. Die erzählt irgendwas, dass der tag für irgendwelche Filter gut sei.

Einen direkten Aufruf von setfacl sehe ich wiederum nur in /lib/udev/rules.d/99-libsane1.rules

#8102030
Lesenswert?
• ▲
▼

Jörg W. schrieb:

Norbert schrieb:

94-SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2fff", TAG+="uaccess"

Und wie löst dieser TAG jetzt in ACLs auf? Da werde ich aus der man page nicht schlau. Die erzählt irgendwas, dass der tag für irgendwelche Filter gut sei. Einen direkten Aufruf von setfacl sehe ich wiederum nur in /lib/udev/rules.d/99-libsane1.rules

"The key of the rule is the attached TAG named uaccess, which has the effect that the login daemon applies a dynamic user access control list to the device node making the device usable for the currently logged-in user." https://avrdudes.github.io/avrdude/8.1/avrdude_34.html

KI Search Assist: "Understanding the TAG+="uaccess" in Udev Rules Purpose of TAG+="uaccess"

The TAG+="uaccess" directive in udev rules is used to grant access to devices for logged-in users. This is achieved through dynamic Access Control Lists (ACLs) that are managed by systemd-logind. When this tag is applied, it allows users to interact with devices without needing to be part of specific groups."

#8102098
Lesenswert?
• ▲
▼

Jörg W. schrieb:

Norbert schrieb:

Der TAG=='uaccess' in der udev-rule veranlasst ein Nachfragen beim systemd-login-daemon.

Dann habe ich zumindest die Dokumentation dieses Features nicht in der man page gefunden.

Die systemd Dokumentation ist in großen Teilen milde formuliert grottenschlecht. Wissen sie auch selbst: https://github.com/systemd/systemd/issues/4288

Hier der Part:
We should also document the replacement mechansim based on uacess/udev/logind. How those pieces fit together, like tagging the devices via udev rules, logind applying the permissions for local and active users etc.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren