내 시스템에 심각한 문제가 있습니다. 내 로그인 관리자(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 파일을 읽기 때문에) 로그인한 후에는 모든 비밀번호를 사용할 수 있었습니다. 그래서 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은 내 이메일 계정의 비밀번호를 얻을 수 없다고 불평합니다. 달리는 해마를 발견했나요?비밀번호부분.
해결책
몇 시간 동안 싸우고 다양한 조합을 시도한 후(그 중 하나가 표시됨)비밀번호섹션에 있지만 폴더 로그인이 잠겨 있습니다! ) 올바른 해결책을 찾았습니다.
#!/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,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-버스 문서,
서로 다른 디렉터리에 있는 두 개의 .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
요구 사항에 따라 수정할 수 있습니다. 원본 파일은 완전히 무시됩니다.