質問

質問

私のシステムに深刻な問題があります。私のログインマネージャ(LightDM)は、成功したログイン時にgnome-keyring-daemonを起動し、期待どおりに私のキーリングのロックを解除します(編集する:すべてがPAMを通過します。)

問題は、1つのコンポーネントのみを使用してgnome-keyring-daemonを起動しましたが、、、およびがsecretsすべて必要であることです。後者がデフォルトではない理由がわからず、これをパッケージマネージャに報告する必要があるかもしれません。pkcs11secretssshgpg

このファイルは、/usr/share/dbus-1/services/org.freedesktop.secrets.servicegnome-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次に、次のようにgnome-keyring-daemonを起動してみました(LightDMで読み取る、他のDMは別のファイルを読み取ることができます)。

#!/bin/bash

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

再起動して(ログアウトして再度ログインするよりもこれが好きです)、ログインした後にGPGキーのパスワードを求めるメッセージは表示されませんが、Offlineimapは私のEメールアカウントのパスワードを取得できないと文句を言います。走る海馬を見つけましたか?パスワード部分。

解決策

数時間戦ってさまざまな組み合わせを試した後(そのうちの1つが表示されます)パスワードセクションにありますが、フォルダログインはロックされています! )正しい解決策が見つかりました。

#!/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シェルで実行してSSH_AUTH_SOCK文に応じて変数を追加します。gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,sshexport

LightDMはPAM構成のためにまだ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-バス文書

異なるディレクトリにある 2 つの .service ファイルが同じサービス名を提供する場合、優先順位の高いディレクトリのファイルが使用されます (たとえば、システム バス上の /usr/local/share/dbus-1/system-.serviceファイル)。サービスは、/usr/share/dbus-1/system-services のサービスよりも優先されます。

また、dbus-daemonのマンページによると、

Unixでは、標準セッションサービスディレクトリは次のとおりです。

  • $XDG_RUNTIME_DIR/dbus-1/servicesXDG_RUNTIME_DIR設定されている場合
  • $XDG_DATA_HOME/dbus-1/servicesXDG_DATA_HOMEデフォルトは~/.local/share
  • directory/dbus-1/servicesdirectoryの各項目のデフォルト値は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要件に応じて変更することができます。元のファイルは完全に無視されます。

関連情報