Moving the agent's socket to /var/run ?

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed Jun 8 19:33:47 CEST 2016


Hi Werner--

On Wed 2016-06-08 09:29:13 -0400, Werner Koch wrote:

> I just pushed some changes to use sockets below /run/user:
>
>     If a [/var]/run/user/$(id -u)/ directory exists, a gnupg subdir is
>     created as needed and the permissions of the directories are checked.
>     If that all matches that directory name is returned instead of the
>     homedir.
>     
>     To cope with non standard homedirs (via GNUPGHOME or --homedir) the
>     SHA-1 hash of the homedir is computed, left truncated to 120 bits,
>     zBase-32 encoded, prefixed with "d.", and appended to
>     "[/var]/run/user/$(id -u)/gnupg/".  If that directory exists and has
>     proper permissions it is returned as socket dir - if not the homedir
>     is used.  Due to cleanup issues, this directory will not be
>     auto-created but needs to be created by the user in advance.
>     
>     The required permissions are: directory owned by the user, group and
>     others bits not set.

Thanks, these are great changes!

I think i understand the variation with non-standard homedirs, but i
wonder what happens if GNUPGHOME (or --homedir) is set, but it happens
to be exactly the same as the default homedir.  At that point, what
directory is used -- the standard directory, the one with the digested
value, or the one actually in the homedir?  (or should the digested
value of the default appear automatically as a symlink to .. ?)

Also, is there an easy/automated way to query gpg for the hashed
directory?  it'd be nice for external tools to be able to do something
like:

  gpgconf --homedir $foo --print-socket-dir

instead of re-implementing the logic you've described above.

Is the ssh-agent socket also placed inside the socket dir, or always in
the non-custom location?

> If you are using gpg-agent for ssh, remember to change the envvar to the
> new place:
>
>   SSH_AUTH_SOCK="/run/user/${UID}/gnupg/S.gpg-agent.ssh"
>   export SSH_AUTH_SOCK
>
> This envvar is actually a bit annoying and thus I would appreciate if
> Debian could change ssh to try the above socket if for example
> SSH_AUTH_SOCK is set to "gpg-agent" or some other magic.

That's an interesting proposal, though i'm not sure that debian is the
right place to do it.  Why not propose such a change to upstream
OpenSSH?

        --dkg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 948 bytes
Desc: not available
URL: </pipermail/attachments/20160608/a125c739/attachment.sig>


More information about the Gnupg-devel mailing list