Linux: Anschluss an einen virtuellen USB-COM-Port ohne Rootzugriff?

988
Furo

Ich versuche, einen Mikrocontroller über einen virtuellen USB-Anschluss an einen Host-Computer anzuschließen. Ich habe jedoch keine Root-Rechte auf dem Host-Computer. Der Controller wird als / dev / ttyACM0 angezeigt.

Wenn ich versuche, eine Verbindung mit dem pyserial- Modul herzustellen, wird die Fehlermeldung "Erlaubnis verweigert" angezeigt .

Gibt es eine Möglichkeit, dies zu umgehen, ohne sudo-Befehle zu verwenden? Vielleicht zwingt der Mikrocontroller irgendwie, sich nicht als ACM anzukündigen ? Könnte das Genehmigungsproblem auf diese Weise vermieden werden?

$ ls -l /dev/ttyACM0 crw-rw----. 1 root dialout 166, 0 Apr 4 13:44 /dev/ttyACM0 $ id uid=1003(mri) gid=1001(nmruser) groups=1001(nmruser),100(users),1000(nmrsu) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102‌​3 

Leider kann ich die Berechtigungen nicht ändern. Der Host ist der Computer eines MRI-Scanners. Das System wird vom Hersteller des Scanners verwaltet. Ich habe überlegt, Ethernet zu verwenden, aber ich hoffte, dass es einen Weg gibt, dies zu vermeiden.

3

2 Antworten auf die Frage

2
mtak

Standardmäßig ist der uneingeschränkte Zugriff auf die meisten (wenn nicht alle) Geräte nur für root zulässig. Sie müssten die Berechtigungen ändern /dev/ACM0, damit Ihr Benutzerkonto es verwenden kann. Eine gebräuchliche Gruppe für diese Verwendung ist dailout, es kann jedoch jeder Benutzer / Gruppe mit Schreibzugriff auf die 'Datei' sein.

Sie können die Berechtigungen mit chmodund ändern chown:

$ chmod 664 /dev/ttyACM0 $ chown root:dailout /dev/ttyACM0 

Jede serielle Verbindung, die Sie herstellen, wird dieses Problem haben. Wenn Sie dies vermeiden möchten, müssen Sie ein Out-of-Band-Medium verwenden, das standardmäßig nicht gesperrt ist, z. B. Ethernet. Sie können dann einen HTTP- oder MQTT-Server einrichten, um Daten zwischen dem Host und dem Mikrocontroller zu übertragen.

Ich weiß nicht, was Sie ausweisen, aber ich möchte nicht mit einem MRI-Scanner herumspielen. Viel Glück! mtak vor 7 Jahren 2
0
dirkt

Bitten Sie die Person, die über Rootzugriff verfügt, um eine udevRegel einzurichten, die den Berechtigungen für benutzerdefinierten Namen, Gruppen und Gruppenberechtigungen w / w dem aktuellen Status zuweist /dev/ttyACM0. Sie sollten auch Mitglied dieser Gruppe werden.

Danach können Sie das Gerät öffnen, ohne root zu sein.

Sie können diese Änderung nicht ohne Root-Rechte oder physischen Zugriff vornehmen, sodass Sie für diese Gelegenheit einmal root werden können.

Kannst du erklären, wie ich `/ dev / ttyACM0` eine Gruppe zuordnen kann? Ich habe `SUBSYSTEMS ==" usb ", ATTRS ==" f055 ", MODE =" 0666 ", GROUP =" Gruppenname "` verwendet. Dies ändert nur die Gruppe von / dev / bus / usb / x / y. Furo vor 7 Jahren 0