
我的系統面臨一個嚴重的問題。我的登入管理員 (LightDM) 正在成功登入時啟動 gnome-keyring-daemon 並按預期解鎖我的金鑰環(編輯:一切都透過 PAM)。
問題是,我只用一個元件啟動 gnome-keyring-daemon:secrets
,但我需要所有這些:pkcs11
、secrets
、ssh
和gpg
。我不知道為什麼後者不是預設值,我也不知道是否應該將此報告給包維護者。
該檔案/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,ssh
export
請注意,由於其 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
對於每個directory
inXDG_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
並根據您的要求進行修改。原始文件將被完全忽略。