Linux: Verbindung zu einem virtuellen USB-COM-Port ohne Root-Zugriff?

3

Ich versuche, einen Mikrocontroller über einen virtuellen USB-COM-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, über das Pyserial- Modul eine Verbindung herzustellen , wird der Fehler "Berechtigung verweigert" angezeigt .

Gibt es eine Möglichkeit, dies zu umgehen, ohne irgendwelche sudo-Befehle zu verwenden? Vielleicht zwingt sich der Mikrocontroller irgendwie nicht als ACM anzumelden ? Konnte das Berechtigungsproblem 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 MRT-Scanners. Das System wird vom Hersteller des Scanners gewartet. Ich habe überlegt, Ethernet zu verwenden, aber ich hatte gehofft, dass es einen Weg gibt, dies zu vermeiden.

Furo
quelle

Antworten:

2

Standardmäßig ist der unformatierte Zugriff auf die meisten (wenn nicht alle) Geräte nur für Root zulässig. Sie müssten die Berechtigungen für ändern /dev/ACM0, damit Ihr Benutzerkonto es verwenden kann. Eine übliche Gruppe für diese Verwendung ist dailout, aber es kann sich um jeden Benutzer / jede Gruppe mit Schreibzugriff auf die 'Datei' handeln.

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

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

Bei jeder seriellen Verbindung, die Sie herstellen, tritt dieses Problem auf. 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önnten dann einen HTTP- oder MQTT-Server einrichten, um Daten zwischen dem Host und dem Mikrocontroller zu übertragen.

mtak
quelle
2
Ich weiß nicht, was Ihre Anmeldeinformationen sind, aber ich möchte nicht mit einem MRT-Scanner herumspielen. Viel Glück!
MTAK
0

Bitten Sie die Person, die über Root-Zugriff verfügt, eine udevRegel einzurichten , die dem aktuellen Status einen benutzerdefinierten Namen, eine Gruppe und Gruppen-R / W-Berechtigungen 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 vornehmen, ohne über Root-Rechte oder physischen Zugriff zu verfügen, sodass Sie aus diesem Grund einmal Root werden können.

dirkt
quelle
Können Sie erklären, wie ich eine Gruppe zuordnen kann /dev/ttyACM0? Ich habe verwendet SUBSYSTEMS=="usb", ATTRS{idVendor}=="f055", MODE="0666", GROUP="groupname". Dies ändert nur die Gruppe von /dev/bus/usb/x/y.
Furo