Das Problem

Das Problem

Ich habe ein hässliches Problem mit meinem System. Mein Login-Manager (LightDM) startet den Gnome-Keyring-Daemon beim Login erfolgreich und entsperrt meinen Schlüsselbund wie vorgesehen (BEARBEITEN:Alles über PAM).

Die Sache ist, ich kann gnome-keyring-daemon mit nur einer Komponente starten: secrets, aber ich brauche all das hier: pkcs11, secrets, ssh, und gpg. Ich weiß nicht, warum Letzteres nicht die Standardeinstellung ist, und ich weiß auch nicht, ob ich das dem Paketbetreuer melden sollte.

Die Datei /usr/share/dbus-1/services/org.freedesktop.secrets.servicedefiniert, wie der Gnome-Keyring-Daemon ausgeführt werden soll:

[D-BUS Service]
Name=org.freedesktop.secrets
Exec=/usr/bin/gnome-keyring-daemon --start --foreground --components=secrets

Ich könnte es einfach in Emacs bearbeiten und das Problem wäre gelöst, aber das wäre schmutzig und meine Änderungen wären beim nächsten Upgrade des Gnome-Keyring-Pakets weg.

Die Frage ist also: Wie ändere ich die ExecZeile dieses Dienstes und verhindere gleichzeitig, dass sie beim nächsten Systemupgrade verloren geht? Gibt es eine Möglichkeit, benutzerdefinierte Dienste zu aktivieren und die standardmäßig enthaltenen Dienste zu deaktivieren?

Die relevanten Pakete und ihre Versionen, die auf meinem System installiert sind.

$ LC_ALL=C pacman -Qi dbus gnome-keyring lightdm | egrep "(Name|Version)"
Name           : dbus
Version        : 1.8.8-1
Name           : gnome-keyring
Version        : 3.12.2-1
Name           : lightdm
Version        : 1:1.12.0-1

Antwort1

Ok, ich habe eine Möglichkeit gefunden, dieses Problem zu lösen. Dies geht nicht direkt auf meine Frage ein, löst aber das Problem, das mich dazu veranlasst hat, hier zu fragen.

Das Problem

tatsächlich hat Gnome-Keyring meine GPG-Schlüssel nicht entsperrt, sodass ich bei jeder Anmeldung nach dem Passwort meines GPG-Schlüssels gefragt wurde (weil Emacs zur Konfiguration eine GPG-Datei liest). Alle meine Passwörter waren nach der Anmeldung verfügbar, sodass Offlineimap sich nicht darüber beschwerte, dass es bei der Arbeit überhaupt nicht an die Passwörter meines E-Mail-Kontos gelangen konnte.

Ich habe dann versucht, den Gnome-Keyring-Daemon .xprofile(der von LightDM gelesen wird, andere DM lesen möglicherweise andere Dateien) folgendermaßen zu starten:

#!/bin/bash

eval $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
export GPG_AGENT_INFO SSH_AUTH_SOCK

Nach dem Neustart (ich mag das lieber als mich abzumelden und wieder anzumelden) und der erneuten Anmeldung wurde ich nicht nach meinem GPG-Schlüsselpasswort gefragt, aber offlineimap beschwerte sich, dass es die Passwörter meiner E-Mail-Konten nicht abrufen konnte. Beim Ausführen von seahorse stelle ich fest, dass es keinePasswörterAbschnitt.

Die Lösung

Nach einigen Stunden Kampf und dem Ausprobieren vieler verschiedener Kombinationen (eine davon zeigt diePasswörterAbschnitt, aber mit gesperrtem Ordner „Login“!) Ich habe herausgefunden, was die richtige Lösung war:

#!/bin/bash

source /etc/X11/xinit/xinitrc.d/30-dbus  # You need a dbus session, duh
eval $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
export GPG_AGENT_INFO SSH_AUTH_SOCK

Erledigt. Problem gelöst. das ist gut, Leute.

BEARBEITEN:Achtung, Ihr Gnome-Keyring-Daemon kann weitere Umgebungsvariablen ausgeben, die Sie exportieren können. Um sicherzugehen, dass Sie nicht mehr als diese benötigen, GPG_AGENT_INFOführen SSH_AUTH_SOCKSie sie gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,sshvon Ihrer Shell aus aus und fügen Sie dem Satz entsprechend weitere Variablen hinzu export.

Bitte beachten Sie, dass LightDM dank seiner PAM-Konfiguration immer noch den Gnome-Keyring-Daemon startet und ichwürde nichtempfehlen Ihnen, diese Konfiguration zu ändern.Jedoch, wenn Sie nach dem Login Ihr Passwort eingeben müssen, um etwas auf dem Gnome-Schlüsselbund freizuschalten, liegt das möglicherweise daran, dass LightDM Ihr Passwort nicht an den Schlüsselring weitergibt. Ich habe das LightDM PAM-Modul folgendermaßen ergänzt /etc/pam.d/lightdm:

auth       optional    pam_gnome_keyring.so try_first_pass

Die Ergänzung war die try_first_passSache (LesenDas Linux-PAM-Handbuch für Systemadministratorenist keine schlechte Idee), in meinem System ist dieser Parameter in LightDM nicht enthalten.

So habe ich mein Problem mit dem Gnome-Schlüsselring gelöst!

Antwort2

(Beantwortung der Frage im Titel, da sie allein nützlich ist)

Entsprechend derDokumentation von D-Bus,

Wenn zwei .service-Dateien in verschiedenen Verzeichnissen denselben Dienstnamen anbieten, wird die Datei im Verzeichnis mit der höheren Priorität verwendet: Auf dem Systembus beispielsweise haben .service-Dateien in /usr/local/share/dbus-1/system-services Vorrang vor denen in /usr/share/dbus-1/system-services.

Außerdem heißt es in der Manpage von dbus-daemon:

Unter Unix lauten die Standardverzeichnisse für Sitzungsdienste:

  • $XDG_RUNTIME_DIR/dbus-1/services, wenn XDG_RUNTIME_DIRgesetzt ist
  • $XDG_DATA_HOME/dbus-1/services, wobei XDG_DATA_HOMEstandardmäßig~/.local/share
  • directory/dbus-1/servicesfür jedes directoryin XDG_DATA_DIRS, wobei XDG_DATA_DIRSstandardmäßig/usr/local/share:/usr/share
  • ${datadir}/dbus-1/servicesfür die ${datadir}, die bei der Kompilierung von dbus angegeben wurde, normalerweise/usr/share

In Ihrem Fall könnten Sie also die Servicedatei kopieren ~/.local/share/dbus-1/services/org.freedesktop.secrets.serviceund sie Ihren Anforderungen entsprechend ändern. Die Originaldatei wird dann vollständig ignoriert.

verwandte Informationen