로그인 시 그놈 키링 잠금 해제

로그인 시 그놈 키링 잠금 해제

디스플레이 관리자 없음, i3 창 관리자로 데비안 테스트를 실행합니다. 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에 의해 잠금 해제됩니다. 질문에 설명된 대로 추가된 두 줄은 /etc/pam.d/login여전히 ​​매우 필요합니다.

감사의 말이 블로그

관련 정보