michahe
Anmeldungsdatum: 12. Dezember 2013
Beiträge: 789
|
Hallo, für den Kartenleser einer GUI - Banking-Anwendung benötige einen Dienst, den ich per
| $ sudo systemctl enable meinDienst
|
oder
| $ sudo systemctl enable --now meinDienst
|
dauerhaft starten könnte; so funktioniert es auch nach Neustart des PC. (Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen? Im Prinzip möchte ich in / für eine .desktop-Datei so etwas:
| $ sudo systemctl start meinDienst # Starte den Dienst
$ cd /opt/jameica
$ ./jameica.sh # Starte Jameica / HIBISCUS und warte auf Schließen
$ sudo systemctl stop meinDienst # Stoppe den Dienst
|
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: Zähle...
|
Schau dir bitte mal systemd/User Units an.
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5077
|
Muss der Dienst mit root-Rechten laufen? Falls nicht, kannst du den systemd service pro user konfigurieren und starten. EDIT: Was sh4711 sagt ☺
|
michahe
(Themenstarter)
Anmeldungsdatum: 12. Dezember 2013
Beiträge: 789
|
Danke, aber ich verstehe Euch nicht: UserUnits sagt, dass die Units nicht beim Systemstart mit gestartet werden, sondern erst wenn der Nutzer, für den die Unit aktiviert ist, sich auf dem System anmeldet. Ich habe (und will) aber keinen extra User für die Banking-Anwendung. Dann hilft mir doch die UserUnit nicht, oder?
Muss der Dienst mit root-Rechten laufen?
$ systemctl start meinDienst
funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte". Wäre folgende Zeile in einer .desktop OK:
Exec= systemctl enable meinDienst && systemctl start meinDienst && /opt/jameica/jameica.sh && systemctl stop meinDienst && systemctl disable meinDienst
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5077
|
michahe schrieb: Danke, aber ich verstehe Euch nicht: UserUnits sagt, dass die Units nicht beim Systemstart mit gestartet werden, sondern erst wenn der Nutzer, für den die Unit aktiviert ist, sich auf dem System anmeldet. Ich habe (und will) aber keinen extra User für die Banking-Anwendung. Dann hilft mir doch die UserUnit nicht, oder?
Du brauchst ja keinen separaten User, es reicht ja der aktuell aktive User. Muss der Dienst mit root-Rechten laufen?
$ systemctl start meinDienst
funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte".
Das heisst nur, dass meinDienst eine System Unit ist, nicht, dass sie auch eine system unit sein muss. Wir kennen deinen meinDienst nicht.
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 655
|
michahe schrieb: ...
Wäre folgende Zeile in einer .desktop OK:
Exec= systemctl enable meinDienst && systemctl start meinDienst && /opt/jameica/jameica.sh && systemctl stop meinDienst && systemctl disable meinDienst
Teste es am besten wie in deinem ersten Post Schritt für Schritt im Terminal. Dann bekommst du etwaige Fehlermeldungen direkt mit. Und wenn alles läuft bau es in deine exec-Anweisung.
|
michahe
(Themenstarter)
Anmeldungsdatum: 12. Dezember 2013
Beiträge: 789
|
Danke!
sebix schrieb: Muss der Dienst mit root-Rechten laufen?
$ systemctl start meinDienst
funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte".
Das heisst nur, dass meinDienst eine System Unit ist, nicht, dass sie auch eine system unit sein muss. Wir kennen deinen meinDienst nicht.
meinDienst ist pcscd für den Kartenleser
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo,
Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen?
Per se ist systemd nicht für die Interaktion mit GUI Anwendungen bzw. der Desktop Umgebung gemacht. systemd regelt den Systemstart mit bzw. auch, wenn ein Nutzer sich einloggt. Was spricht denn dagegen, dass der Kartenleser gestartet wird, wenn der Nutzer sich einloggt. Also egal, ob Jameica danach genutzt wird oder nicht. Bzw. welchen Vorteil siehst du, wenn der Kartenleser nur laufen würde, wenn Jameica läuft? Gruß, noisefloor
|
michahe
(Themenstarter)
Anmeldungsdatum: 12. Dezember 2013
Beiträge: 789
|
Danke noisefloor, Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen?
Per se ist systemd nicht für die Interaktion mit GUI Anwendungen bzw. der Desktop Umgebung gemacht. systemd regelt den Systemstart mit bzw. auch, wenn ein Nutzer sich einloggt. Was spricht denn dagegen, dass der Kartenleser gestartet wird, wenn der Nutzer sich einloggt.
Im Grund nichts, dann läuft der Dienst faktisch immer. Es gibt auf diesem Rechner einen Nutzer (ich) und der ist eingeloggt, wenn der Rechner läuft (100 Stunden pro Woche). Ich "dachte", es sei "sauberer", den Dienst nur bei Nutzung der Banking-Anwenung (0,5 Stunden pro Woche) zu aktivieren. Also welche Variante:
Exec= systemctl enable pcscd && systemctl start pcscd && /opt/jameica/jameica.sh && systemctl stop pcscd && systemctl disable pcscd
oder
$ sudo systemctl enable --now meinDienst # einmalig
Exec= /opt/jameica/jameica.sh
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo, weder noch, sondern die besagte systemd User Unit. Es spricht absolut nichts dagegen, wenn ein (weiterer) Dienst, nämlich der für den Kartenleser, im Hintergrund idlet, wenn du den Kartenleser nicht im Betrieb hast. Damit kommt das System klar und das wirst du ziemlich sicher bei Ressourcenverbrauch nicht merken. Gruß, noisefloor
|