問題

問題

我的系統面臨一個嚴重的問題。我的登入管理員 (LightDM) 正在成功登入時啟動 gnome-keyring-daemon 並按預期解鎖我的金鑰環(編輯:一切都透過 PAM)。

問題是,我只用一個元件啟動 gnome-keyring-daemon:secrets,但我需要所有這些:pkcs11secretssshgpg。我不知道為什麼後者不是預設值,我也不知道是否應該將此報告給包維護者。

該檔案/usr/share/dbus-1/services/org.freedesktop.secrets.service定義 gnome-keyring-daemon 應如何運作:

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

我可以在 Emacs 上編輯它並解決問題,但是,這很髒,我的更改將在 gnome-keyring 包的下一次升級中消失。

那麼,問題是:如何更改Exec該服務的線路,同時防止該服務在下次系統升級時遺失?有沒有辦法啟用自訂服務並停用預設提供的服務?

我的系統上安裝的相關軟體包及其版本。

$ 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

答案1

好的,我找到了解決這個問題的方法。這並沒有直接解決我的問題,而是解決了促使我在這裡問的問題。

問題

事實上,gnome-keyring 沒有解鎖我的GPG 金鑰,所以每次登入時都會要求我提供GPG 金鑰的密碼(因為Emacs 讀取.gpg 檔案進行配置),我的所有密碼在登入後都可用,所以Offlineimap 並沒有抱怨工作時根本無法取得我的電子郵件帳號的密碼。

.xprofile然後我嘗試以這種方式從(由 LightDM 讀取,其他 DM 可能讀取不同的檔案)啟動 gnome-keyring-daemon :

#!/bin/bash

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

重新啟動(我最喜歡這個,而不是登出並再次登入)並登入後,我沒有被要求提供我的 GPG 金鑰密碼,但是 Offlineimap 抱怨無法取得我的電子郵件帳戶的密碼。奔跑的海馬 我注意到沒有密碼部分。

解決方案

經過幾個小時的戰鬥並嘗試了許多不同的組合(其中之一,顯示了密碼部分,但資料夾登入已鎖定! )我找到了正確的解決方案:

#!/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

完畢。問題解決了。 el es fin, muchachos。

編輯:請注意,您的 gnome-keyring-daemon 可能會發出更多環境變數供您匯出。確保您不需要更多GPG_AGENT_INFO或從 shellSSH_AUTH_SOCK運行並根據句子添加更多變數。gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,sshexport

請注意,由於其 PAM 配置,LightDM 仍在啟動 gnome-keyring-daemon,並且我不會建議您更改此類配置。然而,如果您發現自己在登入後輸入密碼來解鎖 gnome-keyring 上的某些內容,可能是因為 LightDM 沒有向其提供您的密碼。我對 LightDM PAM 模組進行了新增/etc/pam.d/lightdm

auth       optional    pam_gnome_keyring.so try_first_pass

添加就是try_first_pass事情(閱讀Linux-PAM 系統管理員指南不是一個壞主意),在我的系統 LightDM 中沒有包含該參數。

這就是我解決 Gnome Keyring 問題的方法!

答案2

(回答標題中的問題,因為它本身很有用)

根據D-Bus 文檔,

如果不同目錄中的兩個.service 檔案提供相同的服務名稱,則使用優先順序較高的目錄中的檔案:例如,在系統匯流排上, /usr/local/share/dbus-1/system- 中的.service 檔案服務優先於 /usr/share/dbus-1/system-services 中的服務。

另外,根據 dbus-daemon 的線上幫助頁,

在 Unix 上,標準會話服務目錄是:

  • $XDG_RUNTIME_DIR/dbus-1/services, 如果XDG_RUNTIME_DIR設定了
  • $XDG_DATA_HOME/dbus-1/services,其中XDG_DATA_HOME預設為~/.local/share
  • directory/dbus-1/services對於每個directoryin XDG_DATA_DIRS,其中XDG_DATA_DIRS預設為/usr/local/share:/usr/share
  • ${datadir}/dbus-1/services對於${datadir}編譯 dbus 時指定的,通常/usr/share

因此,根據您的情況,您可以將服務文件複製到~/.local/share/dbus-1/services/org.freedesktop.secrets.service並根據您的要求進行修改。原始文件將被完全忽略。

相關內容