
私のシステムで厄介な問題に直面しています。ログインマネージャ (LightDM) はログイン時に gnome-keyring-daemon を正常に起動し、キーリングのロックを解除します (編集:すべて PAM 経由です。
問題は、gnome-keyring-daemon を 1 つのコンポーネントだけで起動したのですが、、、、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 は作業中に電子メール アカウントのパスワードをまったく取得できないというエラーを報告しませんでした。
次に、次のようにして gnome-keyring-daemon を起動しようとしました.xprofile
(これは LightDM によって読み取られ、他の DM は異なるファイルを読み取る可能性があります)。
#!/bin/bash
eval $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
export GPG_AGENT_INFO SSH_AUTH_SOCK
再起動(ログアウトして再度ログインするよりもこれが一番好き)してログインした後、GPGキーのパスワードは求められませんでしたが、offlineimapは私の電子メールアカウントのパスワードを取得できないと文句を言っていました。seahorseを実行すると、パスワードセクション。
ソリューション
数時間格闘し、さまざまな組み合わせを試した後(そのうちの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
終わり。 問題が解決しました。 もう終わりだよ、たくさんだよ。
編集:注意してください。gnome-keyring-daemon は、エクスポートする環境変数をさらに発行する場合があります。それ以上の環境変数が必要ないGPG_AGENT_INFO
か、シェルからSSH_AUTH_SOCK
実行して、文に応じて変数を追加してください。gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh
export
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-Busのドキュメント、
異なるディレクトリにある 2 つの .service ファイルが同じサービス名を提供する場合、優先度の高いディレクトリにあるファイルが使用されます。たとえば、システム バスでは、/usr/local/share/dbus-1/system-services にある .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
のそれぞれについてXDG_DATA_DIRS
、XDG_DATA_DIRS
デフォルトは/usr/local/share:/usr/share
${datadir}/dbus-1/services
dbusがコンパイルされたときに${datadir}
指定された、通常は/usr/share
したがって、あなたの場合、サービス ファイルをコピーして~/.local/share/dbus-1/services/org.freedesktop.secrets.service
、要件に合わせて変更することができます。元のファイルは完全に無視されます。