[PATCH] gpg-agent: Enable socket activation

Shea Levy shea at shealevy.com
Fri Nov 21 05:19:00 CET 2014


> On Nov 20, 2014, at 1:59 PM, Werner Koch <wk at gnupg.org> wrote:
> 
> On Thu, 20 Nov 2014 14:20, shea at shealevy.com said:
> 
>> Hm, I don’t understand this reasoning. Why is it bad to use
>> non-portable methods in a completely optional feature? I’m not
> 
> For maintenance reasons and to reduce code complexity.
> 

Fair enough, but that has nothing to do with portability :)

>> If all portable software avoided optional use of non-portable
>> functionality, I doubt any functionality would gain enough prominence
>> to become established.
> 
> True if that would solve any real problem.  <rant>systemd is the
> Windowization of Unix and such the opposite of portable and modularized
> software.  It is sad to see how WindowsNT moved over the last 15 years
> towards a system more similar to Unix while Linux as the spearhead of
> the Unix standardization is splitting up into the non-interoperable Unix
> world we had reached 25 years ago.  Time to reconsider FreeBSD</>
> 

Hey, I dislike a lot of what systemd is doing/has done to the Linux community too. But just because one of the main implementors of socket activation has some bad qualities doesn’t mean socket activation itself isn’t a useful tool :) I’ve pointed out the specific problems socket activation solves, and as I’ve said I’ve hit some of these problems in practice.

>> Not everyone has the luxury of a personal single-user machine, and
> 
> You shall not use private keys on a multi-user machine.
> 

Some people have no other option, and while of course it’s not ideal I’d prefer that they have access to some measure of privacy (as I’m sure you would too).

>> If socket activation isn’t an option, can we at least have a flag to
>> not fork and set a new session? At least we still get some of the
> 
> --no-detach already exists but it is mostly useless.  Yes we can
> probably add an option to run without a fork but I see no use case for
> that except for starting gpg-agent from inittab (or whatever you guys do
> on your not-anymore-Unix boxes these days).
> 

Yes, starting it from inittab (or the user-level version of it) is exactly the use case.

> The main point is: gpg-agent shall be started on demand and not by any
> session control daemon.
> 

If that is final then I guess there’s nothing more I can say.

>> benefits of having the daemon manage lifetime easier in that scenario.
> 
> BTW, having a session logoff script remove the socket file is an easy
> way to shutdown gpg-agent:
> 
>  4 - 19:57:49 gpg-agent[563]: can't connect my own socket: IPC connect call failed
>  4 - 19:57:49 gpg-agent[563]: this process is useless - shutting down
>  4 - 19:57:51 gpg-agent[563]: gpg-agent (GnuPG) 2.1.1-beta19 stopped
> 
> and by using rm(1) this is race free.
> 

This is not race free, some process still running after the logoff script can try to connect, see there’s no socket, and spawn a new agent.

> 
> Shalom-Salam,
> 
>   Werner
> 
> -- 
> Die Gedanken sind frei.  Ausnahmen regelt ein Bundesgesetz.
> 




More information about the Gnupg-devel mailing list