특정 옵션으로 gpg-agent를 시작하세요

특정 옵션으로 gpg-agent를 시작하세요

GPG(C에서 libgpgme 사용)를 사용하는 시스템 사용자가 서비스로 실행하는 응용 프로그램이 있습니다. 이 사용자에게는 홈 디렉토리가 없으며 비밀번호 캐시를 제거하고 싶습니다.

그래서 나는 gpg-agent에서 시작 하고 싶습니다 --homedir=/opt/myapp/.gnupg --default-cache-ttl 0.

gpg-agent(1)설명하다:

에이전트는 필요에 따라 gpg, gpgsm, gpgconf 또는 gpg-connect-agent에 의해 자동으로 시작됩니다. 따라서 수동으로 시작할 이유가 없습니다.

이로 인해 몇 가지 질문이 생깁니다.

  1. gpg-agent특정 명령줄 옵션을 사용하여 특정 홈 디렉터리를 어떻게 시작해야 합니까 ?
  2. 이미 실행중인 경우 gpg-agent변경이 가능한가요 homedir? default-cache-ttl아니면 기존 에이전트를 종료해야 하나요?
  3. 기존 사용자를 죽이면 gpg-agent다른(시스템이 아닌) 사용자에게 영향을 미치나요?

질문 1의 경우: 해당 homedir을 사용하여 gpg-connect-agent --homedir /opt/myapp/.gnupg /byegpg-agent에이전트가 생성되지만 다른 에이전트는 계속 실행됩니다. gpg-agent서명할 때 어느 것을 사용합니까?

질문 2: 다음을 시도했습니다. 하지만 homedir옵션으로 나타나지 않고 --list-options gpg-agent, 그 동안 새로운 값이 새로고침되는 것을 보더라도 --list-options비밀번호 없이 파일에 서명할 수 있습니다.

echo "default-cache-ttl::0" | gpgconf --change-options gpg-agent
echo "max-cache-ttl::0" | gpgconf --change-options gpg-agent

답변1

특정 명령줄 옵션을 사용하여 특정 홈 디렉터리에 대해 gpg-agent를 어떻게 시작할 수 있습니까?

서비스 파일에서 .를 사용할 때 Environment=GNUPGHOME=/opt/myapp/.gnupg(또는 필요한 기능을 사용할 때) gpg-agent자동으로 시작됩니다 . 설정하면 / 호출이 기존 호출에 연결되거나 적합한 호출이 아직 존재하지 않는 경우 새 호출이 생성됩니다.gpglibgpgme$GNUPGHOMEgpggpgmegpg-agent--homedir=/opt/myapp/.gnupggpg-agent

gpg-agent가 이미 실행 중인 경우 [...]default-cache-ttl을 변경할 수 있습니까? 아니면 기존 에이전트를 종료해야 합니까?

보낸 사람 gpgconf(1): "gpgconf는 '.gnupg' 홈 디렉터리의 구성 파일을 자동으로 합리적이고 안전하게 쿼리하고 수정할 수 있는 유틸리티입니다. 사용자가 수동으로 호출하지 않도록 설계되었습니다..."

설정할 때 실제로 해야 할 일은 해당 항목이 존재하고 포함되어 있는지 default-cache-ttl확인하는 것입니다 . 새 인스턴스를 생성하기 전에 존재 해야 합니다 . 따라서 이 파일이 애플리케이션과 함께 설치되어 있는지 확인하거나 이 파일을 설정하는 것을 실행하는 서비스이기 때문입니다 .$GNUPGHOME/gpg-agent.confdefault-cache-ttl 0gpg-agentExecStartPre=

기존 gpg-agent를 종료하면 다른(시스템이 아닌) 사용자에게 영향을 미치나요?

죽일 필요는 없어야 합니다 gpg-agent. 서비스 내에서 실행되므로 생성된 모든 gpg-agents는 서비스의 cgroup에서 격리됩니다. 서비스가 중지되면 생성된 gpg-agents는 systemd에 의해 종료됩니다.

참고: 저는 위의 단락에 대해서만 확신합니다. 나는 systemd gpg-connect-agent에서 테스트했을 때 cgroup에 여전히 존재하고 종료된 ExecStartPre=경고가 발생했다는 것을 알았습니다 .gpg-agent

관련 정보