D-Bus

如何在升級的情況下修改 dbus 服務的“Exec”行而不失去更改

  • October 7, 2014

我的系統面臨一個醜陋的問題。我的登錄管理器(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

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

問題

事實上,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 抱怨無法獲取我的電子郵件帳戶的密碼。執行 seahorse 我注意到沒有密碼部分。

解決方案

經過幾個小時的戰鬥並嘗試了許多不同的組合(其中一個顯示密碼部分但文件夾登錄已鎖定!)我發現了正確的解決方案:

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

捐。問題解決了。他是結束,伙計們。

**編輯:**當心,您的 gnome-keyring-daemon 可能會發布更多環境變數供您導出。為了確保您不需要更多GPG_AGENT_INFO或從您的外殼SSH_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 解決問題的方法!

引用自:https://unix.stackexchange.com/questions/159757