GNOME-Schlüsselring unlocken via Terminal

Gaggi123

Ensign
Registriert
Feb. 2007
Beiträge
248
Hallo zusammen,

ich arbeite gerade an einem kleinen Projekt und würde gerne per Terminal den Aufruf zur Eingabe des Passwortes durchgeben, mit welcher immer der GNOME Schlüsselring entsperrt wird. Lässt sich das überhaupt forcen?

MfG

EDIT: Lösung gefunden, zumindest für C++ (wollte ohnehin nur über system(char *c) einen Befehl durchgeben aus C++) bitte letzten Post lesen
 
Zuletzt bearbeitet:
Danke für die Antwort.
Kurz gesagt: Ich entwickle mit C++ und Qt einen simplen Client für das Abgabesystem unserer Uni, damit die Erstis mit Linux nicht auf die Nase fliegen weil sie ihre Aufgaben nicht abgegeben bekommen. Soweit steht auch alles und läuft wie ich das möchte, wenn jedoch eine bestehende lokale Kopie des Repositorys auf dem Rechner geöffnet wird und "add" oder "remove", oder sagen wir nur schon ein "update" Befehl durchgegeben wird fordert das Programm beim Aufrufen, ohne zuvor den Schlüsselring entsperrt zu haben, eigentlich (auf der Konsole) den Schlüssel zum Entsperren. Da es mir eigentlich zu viel Arbeit wäre die Errormeldung vom Output zu catchen hatte ich gehofft, ich könnte einfach über einen einfachen Terminalbefehl das Entsperren des Keyrings fordern, sodass sich die Standard Eingabeaufforderung hierzu einschaltet.
 
Gaggi123 schrieb:
Da es mir eigentlich zu viel Arbeit wäre die Errormeldung vom Output zu catchen hatte ich gehofft, ich könnte einfach über einen einfachen Terminalbefehl das Entsperren des Keyrings fordern, sodass sich die Standard Eingabeaufforderung hierzu einschaltet.

Wenn "add" "remove" etc. Terminalbefehle sind, dann könnte man pkexec dafür nutzen. Ansonsten würde ich mir https://www.freedesktop.org/software/polkit/docs/latest/ anschauen.
 
Danke hierfür, ich schaue mir das mal an. Wenn es mein Problem nicht löst, melde ich mich erneut.
 
Mit QT kenne ich mich nicht aus, aber dafür gibt es wohl Polkit-Qt.
 
Nach einiger Recherche und Tüftelei habe ich jetzt herausgefunden wie es umzusetzen ist! Da ich das Programm unter Linuxmint und damit GNOME entwickle mussten zunächst einmal die dev Pakete zum Keyring installiert werden, also

sudo apt-get install libgnome-keyring-dev
Außerdem mussten dann die entsprechenden Header included werden in C++
#include <gnome-keyring-1/gnome-keyring.h>
Daraufhin kam es jedoch zu Fehlermeldungen aus der gnome-keyring.h bzgl. nicht auffindbarer glib.h, wobei die installiert sind.
Grund hierfür sind nicht standardisierte Speicherorte der Bibliotheken. In der MAKEFILE fügte ich daher hinzu:
INCLUDEPATH += /usr/include/glib-2.0 \
/usr/lib/x86_64-linux-gnu/glib-2.0/include

Nun können die aus der Online Dokumentation der Gnome Keyring API lesbaren Funktionen und Variablen verwendet werden. Mittels gnome_keyring_unlock_sync() und ein wenig Zeit zum Einlesen lässt sich dann das bekannte Fenster zum Entsperren des Schlüsselrings aufrufen.

Wichtig:
Bei mir kam es zu Referenzierungsfehlern, als ich Funktionen wie gnome_keyring_unlock_sync() verwenden wollte. Grund hierfür war (warum auch immer) ein weiterer fehlender Vermerk in der MAKEFILE
LIBS += /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0

Im Anschluss hatte alles funktioniert. Ich hoffe diese Infos helfen irgendwem, der ähnlich verzweifelte wie ich, weiter.
 
Zurück
Oben