[pkg-gnupg-maint] Bug#882736: gpg-agent: does not always use same socketdir

Ansgar Burchardt ansgar at debian.org
Sun Nov 26 11:00:31 UTC 2017


Package: gnupg
Version: 2.1.18-8~deb9u1
Severity: normal

gpg(-agent) uses a different socketdir when a non-default homedir is
specified depending on the environment:

If /run/user/<id> exists, it will use /run/user/<id>/gnupg/d.<hash>;
otherwise it will fall back to <homedir>.  XDG_RUNTIME_DIR is
intentionally ignored...

This does cause multiple instances of gpg-agent to be launched when
first invoking `gpg` with no open login session (/run/user/<id> does
not exist) and then again with an open login session open (which
created /run/user/<id>).

Only one gpg-agent will be able to access smartcards, the other will
just give an error.

If both `gpg` invocations happened outside a login session, usually
XDG_RUNTIME_DIR wouldn't be set and gpg would always use the same
socket location (unless also invoked from within a session with
XDG_RUNTIME_DIR set).  Or one could set XDG_RUNTIME_DIR to a fixed
location before invoking gpg (or unset it), but gpg ignores that
variable.

In addition it would be nice if there was an option to explicitly
configure a socket directory to allow using supervision for
gpg-agent's with a non-default homedir (and not having to rely on
implementation details like d.${hash} which might change).

Ansgar



More information about the pkg-gnupg-maint mailing list