
내 시스템에 심각한 문제가 있습니다. 내 로그인 관리자(LightDM)가 로그인 시 gnome-keyring-daemon을 성공적으로 시작하고 내 키링을 정상적으로 잠금 해제합니다(편집하다:PAM을 통한 모든 것).
문제는 단 하나의 구성 요소로 gnome-keyring-daemon을 시작했지만 , , 및 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 파일을 읽기 때문에). 모든 비밀번호는 로그인 후에 사용할 수 있었습니다. 오프라인imap은 작업할 때 내 이메일 계정의 비밀번호를 전혀 얻을 수 없다고 불평하지 않았습니다.
.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 키 비밀번호를 묻는 메시지가 표시되지 않았지만, 오프라인imap은 내 이메일 계정의 비밀번호를 얻을 수 없다고 불평했습니다. 달리는 해마 나는 아무것도 없다는 것을 알았습니다비밀번호부분.
해결책
몇 시간 동안 싸우고 다양한 조합을 시도한 후(그 중 하나는비밀번호섹션에 로그인 폴더가 잠겨 있습니다!) 올바른 해결책이 무엇인지 알아냈습니다.
#!/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 문서화,
서로 다른 디렉터리에 있는 두 개의 .service 파일이 동일한 서비스 이름을 제공하는 경우 우선 순위가 더 높은 디렉터리에 있는 이름이 사용됩니다. 예를 들어 시스템 버스의 경우 /usr/local/share/dbus-1/system-에 있는 .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
${datadir}
dbus가 컴파일될 때 지정된 것은 일반적 으로/usr/share
따라서 귀하의 경우 서비스 파일을 복사하여 ~/.local/share/dbus-1/services/org.freedesktop.secrets.service
요구 사항에 맞게 수정할 수 있습니다. 그러면 원본 파일은 완전히 무시됩니다.