Ich habe eine Hardware an meinem Ubuntu/PC per USB (ftdi) angeschlossen.
Auf der Hardware befindet sich ein Flash-Speicher, welche ich nun durch
das tool "flashrom" (https://www.flashrom.org/Flashrom) programmieren
möchte. Das tool "flashrom" greift wiederum über USB auf den ftdi-chip
zu.
Zu meinem Problem:
===================
1) Starte ich es mit "sudo ./flashrom -argumente" --> Passwortabfrage,
dann läuft es
2) Starte ich es als superuser mit "sudo su" --> Passwortabfrage, dann
lässt sich das tool auch einfach so ausführen.
Ich brauche jedoch die Möglichkeit das tool ohne Passwortabfrage zu
starten.
Die Gruppe "dialout" habe ich meinem user bereits hinzugefügt. Auch die
folgende Zeile im visudo bzw. /etc/sudors (und Neustart) zwingt mich
noch zur Passworteingabe:
MeiUserName ALL=(ALL) ALL
Hat jemand einen Tipp was ich noch versuchen könnte?
Google mal nach udev und ubuntu.
Du mußt eine udev Regel erstellen und mit dieser das Gerät einer Gruppe
zuteilen, z.Bsp. plugdev und selber auch dieser Gruppe natürlich
angehören.
Und Du bist sicher, dass das Device File (z.B. /dev/ttyUSB0), auf
das ein Tool zugreifen will, auch der Gruppe "dialout" gehört ?
1
ls-l/dev/[xyz]
Lies Dich mal in die Problematik "UDEV Rules" ein. Mit einer UDEV
Rule kannst Du das Device z.B. /dev/ttyUSB0 einer neuen UID/GID zuordnen
und hast somit von dieser UID aus freien Zugriff darauf.
Gruss Daniel
> Die Gruppe "dialout" habe ich meinem user bereits hinzugefügt.
Hmm... normalerweise fügt man ein User einer Gruppe zu. Wie bist Du
hierbei genau vorgegangen?
Kontrolle: wie schaut die Ausgabe bei folgenden Befehle aus?
Kommandozeile vor dem Frühstück für Alle! schrieb:> Kontrolle: wie schaut die Ausgabe bei folgenden Befehle aus?$ grep> "$USER" /etc/groups && grep "$USER" /etc/passwd
Oder einfach das Kommando "id" benutzen.
montagskind schrieb:> 2) Starte ich es als superuser mit "sudo su" --> Passwortabfrage, dann> lässt sich das tool auch einfach so ausführen.
sudo su ist doppelt gemoppelt. sudo -i würde es auch tun.
> Die Gruppe "dialout" habe ich meinem user bereits hinzugefügt. Auch die> folgende Zeile im visudo bzw. /etc/sudors (und Neustart) zwingt mich> noch zur Passworteingabe:> MeiUserName ALL=(ALL) ALL
Das sollte aber dann das Passwort des Benutzers sein und nicht mehr das
von root.
> Hat jemand einen Tipp was ich noch versuchen könnte?
Du könntest für das Tool das suid-Bit setzen. (Es muss dafür als Owner
root haben)
chmod u+s flashrom
montagskind schrieb:> Beschränke ich die Freigabe nun auf ausschließlich meine verwendeten> USB-Schnittstellen, werde ich wieder nach Passwort gefragt.> myuser ALL = NOPASSWD: /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2,> /dev/ttyUSB3
Was du da angeben musst, sind die Programme, die der Benutzer als root
ausführen darf. /dev/ttyUSB0 ist aber kein Programm. Du müßtest dort
dein flashrom angeben statt das Device. Was du aber machen kannst, ist
Kommandozeilenargumente vorgeben, die dem Programm übergeben werden
müssen.
> Das heißt doch, dass noch irgend jemand anderes die Rechte benötigt,> oder?
Nein, es heißt, dass deine sudoers fehlerhaft ist. ;-)
montagskind schrieb:> Ich habe eine Hardware an meinem Ubuntu/PC per USB (ftdi) angeschlossen.> Auf der Hardware befindet sich ein Flash-Speicher, welche ich nun durch> das tool "flashrom" (https://www.flashrom.org/Flashrom) programmieren> möchte. Das tool "flashrom" greift wiederum über USB auf den ftdi-chip> zu.>> Die Gruppe "dialout" habe ich meinem user bereits hinzugefügt. Auch die> folgende Zeile im visudo bzw. /etc/sudors (und Neustart) zwingt mich> noch zur Passworteingabe:> MeiUserName ALL=(ALL) ALL>> Hat jemand einen Tipp was ich noch versuchen könnte?
Ja, lies den feinen Manuel und konfigurier Dein System richtig. Dabei
gibt es im Prinzip zwei Ansätze: das FTDI-Device hat eine Device-Datei,
und die wiederum hat einen Besitzer und eine Gruppe. Wenn die Gruppe das
Recht hat, auf die Datei zu schreiben, reicht es, Deinen Benutzer dieser
Gruppe hinzu zu fügen und Dich einmal aus- und wieder einzuloggen. Den
Benutzer und die Gruppe des Geräts kannst Du mit udev bzw. systemd-udevd
einstellen.
Der andere Ansatz ist, sudo korrekt zu konfigurieren, siehe dazu: man
sudoers /NOPASSWD -- weiter unten in der Manpage ist auch ein Beispiel.
Siehe dazu auch [1].
Eine Änderung der sudoers (die man nicht direkt, sondern immer mit
visudo bearbeitet, das vor dem Speichern einen Syntaxcheck macht)
erfordert im Übrigen keinen Neustart, sondern wird sofort wirksam. Den
gewünschten Editor kann man visudo über die Umgebungsvariable EDITOR
mitteilen.
[1] https://wiki.ubuntuusers.de/sudo/Konfiguration/
Recht herzlichen Dank für eure Hilfen. Es geht nun.
puhh.... das war jetzt echt ein langer Weg, für so wenig benötigte
Änderungen. Ich hatte zwar diese Zeile:
[c]SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010",
GROUP="users", MODE="0666"
Richtig ist aber diese:
[c]SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010",
GROUP="dialout", MODE="0666"
Ich bin zwar richtig, richtig froh, dass es nun läuft. Vertehen würde
ich es aber trotzdem gerne. Wenn ich das device der Gruppe "users"
zuordne, sollte doch jeder(!) drauf zugreifen können. Warum geht es aber
erst, wenn ich es nur der Gruppe "dialouts" zuordne (der ich angehöre)?
Es könnte rein theoretisch sein, dass die alte Zeile aus irgendeinem
Grund nicht ausgeführt wurde. Oder dass irgendeine Software explizit
nach der Gruppe "dialout" schaut.
Aber laut der grep-Ausgabe bist du überhaupt nicht Mitglied von "users".
Wird das mit dem Kommando "id" angezeigt? Gibt es diese Gruppe überhaupt
in /etc/groups?
Weil es wohl nicht USERS ist, sondern OWNER. Den Link zu libftd2xx hatte
ich heute morgen gepostet. Da hättest du ein funktionierendes Beispiel
gefunden.
Ja, das mit der Gruppe "users" war wohl ein Fehler von mir. Ich dachte,
"users" bedeutet in diesem Fall 'jeder user' und nicht eine Grupe, die
"users" heißt.
Den Link hatte ich mir auch durchgelesen. Danke dafür.