Ich schreibe eine Cross-Plattform-App, die ich gerne auf Linux-basierten Betriebssystemen wie Fedora und Ubuntu ausführen würde. Ich benutze QSerialPort
und es funktioniert gut. Ich kann QSerialPortInfo
verwenden, um eine Liste von seriellen Ports im System zu erhalten und sie dem Benutzer zu präsentieren, der auswählen kann, welchen er/sie verwenden möchte.Wie fordere ich serielle Zugriffsrechte mit Polkit unter Linux an?
Auf Linux-Systemen hat der Benutzer jedoch standardmäßig keine Berechtigungen für die seriellen Ports. Ich weiß, dass es falsch ist, meine App mit sudo
zu starten, und ich weiß auch, dass es nicht benutzerfreundlich ist, den Benutzer zu bitten, chmod 666
auf der seriellen Schnittstelle jedes Mal manuell zu starten, wenn die App verwendet wird. Also habe ich mich umgesehen und es scheint mir, dass Polkit die Antwort ist, aber ich konnte kein Beispiel finden, das mir zeigen würde, wie es geht.
Können Sie mir bitte sagen, wie man polkit (ehemals PolicyKit genannt) verwendet, um die Erlaubnis zu beantragen, dass meine App eine bestimmte serielle Schnittstelle verwendet?
EDIT:
Was ich suche ist eine Möglichkeit, zu:
- Überprüfen Sie, ob der Benutzer Zugriff auf die serielle Schnittstelle hat
- Wenn nicht, einen Dialog Pop-up, dass fragt nach Erlaubnis (wie zum Beispiel die Gnome Einstellungen App)
- Wenn der Benutzer erfolgreich authentifiziert hat, stellen Sie den seriellen Port für die App zur Verfügung.
Einige weitere Gedanken
- Ich möchte nicht über eine udev-Regel einrichten, die perimission jedem seriellen Port
- ich den Benutzer fragen, nicht wollen, gibt ein Skript
- laufen Ich möchte nicht, dass meine App als Superuser ausgeführt wird
- Ich möchte keine anderen Aktionen als root ausgeführt werden, nur die serielle Schnittstelle Zugriff
Ja, ich habe die official polkit docs gefunden, aber sie sind nicht sehr klar, wie dies zu tun ist.
Wie wäre es, den Benutzer zu UUCP/Dialout (oder revalent) Gruppe hinzufügen? –
@Calvin Ich möchte den Benutzer nicht darum bitten. – Venemo