ログイン時にGNOMEキーリングのロックを解除

ログイン時にGNOMEキーリングのロックを解除

ディスプレイマネージャなし、i3ウィンドウマネージャとしてDebianテストを実行します。 gnome-keyring&libpam-gnome-keyringパッケージがインストールされました。 /etc/pam.d/loginの末尾に次の2行を追加します。

auth       optional     pam_gnome_keyring.so
session    optional     pam_gnome_keyring.so auto_start

キーリングはsystemd @によって開始されましたが、/etc/systemd/user/graphical-session-pre.target.wants/gnome-keyring-daemon.servicexinitrcでも交換を試みました。

eval $(/usr/bin/gnome-keyring-daemon --replace --components=gpg,pkcs11,secrets,ssh)

/var/log/auth.logには、オペレーティングシステムのログインの次の内容が含まれています。

Jun 26 00:35:39 p14s su[1409]: (to laur) root on none
Jun 26 00:35:39 p14s su[1409]: pam_unix(su:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:39 p14s systemd: pam_unix(systemd-user:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:39 p14s su[1409]: pam_unix(su:session): session closed for user laur
Jun 26 00:35:41 p14s su[1922]: (to laur) root on none
Jun 26 00:35:41 p14s su[1922]: pam_unix(su:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:42 p14s su[1922]: pam_unix(su:session): session closed for user laur
Jun 26 00:35:42 p14s su[2005]: (to laur) root on none
Jun 26 00:35:42 p14s su[2005]: pam_unix(su:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:42 p14s login[1174]: gkr-pam: unable to locate daemon control file
Jun 26 00:35:42 p14s login[1174]: gkr-pam: stashed password to try later in open session
Jun 26 00:35:42 p14s login[1174]: pam_unix(login:session): session opened for user laur(uid=1000) by LOGIN(uid=0)
Jun 26 00:35:42 p14s systemd-logind[1003]: New session 2 of user laur.
Jun 26 00:35:42 p14s login[1174]: gkr-pam: unlocked login keyring <----- this should be success, right?
Jun 26 00:35:42 p14s su[2005]: pam_unix(su:session): session closed for user laur
Jun 26 00:35:42 p14s su[2078]: (to laur) root on none
Jun 26 00:35:42 p14s su[2078]: pam_unix(su:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:42 p14s su[2078]: pam_unix(su:session): session closed for user laur
Jun 26 00:35:45 p14s polkitd(authority=local): Registered Authentication Agent for unix-session:2 (system bus name :1.81 [/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1], object path /org/gnome/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Jun 26 00:35:46 p14s gnome-keyring-daemon[2026]: The Secret Service was already initialized
Jun 26 00:35:46 p14s gnome-keyring-daemon[3062]: discover_other_daemon: 1
Jun 26 00:35:48 p14s su[4284]: (to laur) root on none
Jun 26 00:35:48 p14s su[4284]: pam_unix(su-l:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:50 p14s su[4284]: pam_unix(su-l:session): session closed for user laur
Jun 26 00:35:50 p14s su[4365]: (to laur) root on none
Jun 26 00:35:50 p14s su[4365]: pam_unix(su-l:session): session opened for user laur(uid=1000) by (uid=0)
Jun 26 00:35:50 p14s su[4365]: pam_unix(su-l:session): session closed for user laur
Jun 26 00:35:50 p14s su[4402]: (to laur) root on none
Jun 26 00:35:50 p14s su[4402]: pam_unix(su-l:session): session opened for user laur(uid=1000) by (uid=0)

また、既存のキーリングを削除して再作成しました。キーリングのパスワードは私のユーザーログインパスワードと同じです。

まだ喜びはありません。 2022年にはこの問題をどのように処理するのでしょうか。

ベストアンサー1

解決したと思います。何が起こっているのかよくわかりませんが、dbusに関連しています。問題はi3の起動方法です~/.xinitrc

exec dbus-run-session i3

私はこれがkeyring-daemonがi3(そしてさらに多くのユーザースペースの他のほとんどすべて)とは異なるdbusセッションにバインドすることを推測します。この問題を克服するために、~/.xsessionsystemdを介してi3を起動します。 ~/.xinitrcを完全に削除しました。

$ cat ~/.xsession
systemctl --user import-environment
systemctl --user daemon-reload

# note we add the 'wait' flag, which disallows immediate exit, which in turn would stop X session right after it.
exec systemctl --user start --wait xsession.target

startxはパラメータなしで開始されます。exec startx

関連システムユニット:

$ tree -a ~/.config/systemd/user/
├── i3wm.service
├── xsession.target
└── xsession.target.requires
    └── i3wm.service -> ../i3wm.service
    
$ cat ~/.config/systemd/user/i3wm.service 
[Unit]
Description=i3 Window Manager
PartOf=graphical-session.target

[Service]
ExecStart=/usr/bin/i3
ExecStopPost=/usr/bin/systemctl --user stop graphical-session.target
Restart=on-failure

[Install]
RequiredBy=xsession.target

$ cat ~/.config/systemd/user/xsession.target
[Unit]
Description=X session managed by systemd
BindsTo=graphical-session.target

暗号化されたキーリングは、期待どおりにログインするとPAMによってロック解除されます。質問の説明に従って追加された2行は/etc/pam.d/loginまだ非常に必要です。

感謝の言葉このブログ

おすすめ記事