DrScott schrieb:
Unter KDE starte ich den Daemon über eine Datei, die unter /home/<user>/.kde/env/ liegt. Dieses Verzeichnis wird nämlich beim Start von KDE herangezogen, um KDE-globale Umgebungsvariablen setzen zu können. Unter GNOME gibt es sicherlich einen gleichartigen Mechanismus... In diesem Verzeichnis liegt bei mir eine Datei 'gpgagent.sh' mit folgendem Inhalt:
eval "$(gpg-agent --daemon)"
Dadurch ist dann in der gesamten KDE-Umgebung (inklusiv aller daraus gestarteten Unterprozesse) z.b. die Umgebungsvariable "GPG_AGENT_INFO" gesetzt. Das führt dann dazu, dass ein gpg-Befehl, der in einer Konsole (aus KDE gestartet!) abgesetzt wurde, ein Passwort per Dialogbox abfragt und eine zeitlang hinterlegt wird.
Wichtig ist also, dass das Programm, welches den Agenten verwenden soll, den entsprechenden Zugriff auf den Agenten kennt. Diese Kenntnis wird über den Inhalt der Variable "GPG_AGENT_INFO" erreicht.
Wenn der Daemon noch nicht läuft, dann kann dieser mir
gpg-agent --daemon
gestartet werden. Man erhält daraufhin in etwas:
GPG_AGENT_INFO=/tmp/gpg-IO2JHw/S.gpg-agent:12781:1; export GPG_AGENT_INFO;
Diese Information ist nur ausgegeben worden, aber nicht gesetzt worden. Zum Setzen kann man die gesamte Zeile in einer Konsole als "Befehl" ausführen. Das Problem: Dies wirkt sich dann nur in dieser Konsole bzw. in Programmen die von dieser Konsole gestartet wurden aus. Und genau darin liegt der Trick mit dem oben erwähnten Mechanismus. Hier wird der gpg-Agent zu einem sehr frühen Zeitpunkt gestartet und die GPG_AGENT_INFO-Variable an alle KDE-Prozesse weitervererbt.
Erstmal danke für die aufklärenden Worte.
Mir ist nun wieder eingefallen, was ich eigentlich erreichen wollte. Anders als vorher behauptet lief bei mir der gpg-agent schon, aber mit für meine Bedürfnisse unpassenden Einstellungen. Außerdem wusste ich nicht, wer ihn gestartet hat. Und als ich ihn selbst neu starten wollte wurde er nicht "erkannt", weil die Umgebungsvariablen nicht übergeben wurden (mir war damals nicht klar, dass das passieren muss).
Jetzt habe ich herausgefunden: Bei mir wird der Agent von
/etc/X11/Xsession.d/90gpg-agent
gestartet. Also habe ich direkt dort die Optionen für den Agenten angepasst (längere Speicherung der Passphrase im Cache). Das war auch erfolgreich.
Nun noch eine Frage: Kann man auch nachträglich die Optionen vom Agenten ändern? Ansonsten muss ich ihn immer erst killen, neu starten und auch das Programm, welches ihn benutzen soll neu starten. Das ist zum Testen recht aufwändig.
edit: jetzt fehlt die Originalantwort im Thread 😕