Test patch: $ cat files/gnupg-2.1.21-force-homedir-socket.patch --<-------------------------------------------------------------------->-- diff --git a/common/homedir.c b/common/homedir.c index fce6d44be..79f5042d1 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -488,7 +488,7 @@ _gnupg_socketdir_internal (int skip_checks, unsigned *r_info) if (!stat (prefix, &sb) && S_ISDIR(sb.st_mode)) break; } - if (!bases[i]) + if (!bases[i] || (getenv("GNUPG_HOMEDIR_SOCKET") && strcmp(getenv("GNUPG_HOMEDIR_SOCKET"), "force") == 0)) { *r_info |= 2; /* No /run/user directory. */ goto leave; --<-------------------------------------------------------------------->-- Test script: --<-------------------------------------------------------------------->-- #!/bin/bash #setup directories rm -rf /tmp/gnupg mkdir -p /tmp/gnupg/{a,b} rm -rf /run/user/$UID/gnupg #first normal run, we should get no socket in homedir as it is in /run/user/$UID export GNUPGHOME=/tmp/gnupg/a gpg --recv-key 94CBAFDD30345109561835AA0B7F8B60E3EDFAE3 gpg -K ls -la /tmp/gnupg/a ls -la /run/user/$UID/gnupg rm -rf /run/user/$UID/gnupg #Now we should force socket in homedir instead export GNUPGHOME=/tmp/gnupg/b export GNUPG_HOMEDIR_SOCKET="force" gpg --recv-key 94CBAFDD30345109561835AA0B7F8B60E3EDFAE3 gpg -K ls -la /tmp/gnupg/b ls -la /run/user/$UID/gnupg rm -rf /run/user/$UID/gnupg --<-------------------------------------------------------------------->-- kristianf@ares ~ $ ./gnupg-test.sh gpg: WARNING: unsafe permissions on homedir '/tmp/gnupg/a' gpg: keybox '/tmp/gnupg/a/pubring.kbx' created gpg: /tmp/gnupg/a/trustdb.gpg: trustdb created gpg: key 0B7F8B60E3EDFAE3: public key "Kristian Fiskerstrand " imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 gpg: WARNING: unsafe permissions on homedir '/tmp/gnupg/a' total 384 drwxr-xr-x 4 kristianf kristianf 140 Jul 9 00:41 . drwxr-xr-x 4 kristianf kristianf 80 Jul 9 00:41 .. drwx------ 2 kristianf kristianf 60 Jul 9 00:41 crls.d drwx------ 2 kristianf kristianf 40 Jul 9 00:41 private-keys-v1.d -rw-r--r-- 1 kristianf kristianf 381005 Jul 9 00:41 pubring.kbx -rw------- 1 kristianf kristianf 32 Jul 9 00:41 pubring.kbx~ -rw------- 1 kristianf kristianf 1200 Jul 9 00:41 trustdb.gpg total 0 drwx------ 3 kristianf kristianf 60 Jul 9 00:41 . drwx------ 8 kristianf root 160 Jul 9 00:41 .. drwx------ 2 kristianf kristianf 140 Jul 9 00:41 d.qfmawbqooe59swes3oaranoy gpg: WARNING: unsafe permissions on homedir '/tmp/gnupg/b' gpg: keybox '/tmp/gnupg/b/pubring.kbx' created gpg: /tmp/gnupg/b/trustdb.gpg: trustdb created gpg: key 0B7F8B60E3EDFAE3: public key "Kristian Fiskerstrand " imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 gpg: WARNING: unsafe permissions on homedir '/tmp/gnupg/b' total 384 drwxr-xr-x 4 kristianf kristianf 240 Jul 9 00:41 . drwxr-xr-x 4 kristianf kristianf 80 Jul 9 00:41 .. drwx------ 2 kristianf kristianf 60 Jul 9 00:41 crls.d drwx------ 2 kristianf kristianf 40 Jul 9 00:41 private-keys-v1.d -rw-r--r-- 1 kristianf kristianf 381005 Jul 9 00:41 pubring.kbx -rw------- 1 kristianf kristianf 32 Jul 9 00:41 pubring.kbx~ srwx------ 1 kristianf kristianf 0 Jul 9 00:41 S.dirmngr srwx------ 1 kristianf kristianf 0 Jul 9 00:41 S.gpg-agent srwx------ 1 kristianf kristianf 0 Jul 9 00:41 S.gpg-agent.browser srwx------ 1 kristianf kristianf 0 Jul 9 00:41 S.gpg-agent.extra srwx------ 1 kristianf kristianf 0 Jul 9 00:41 S.gpg-agent.ssh -rw------- 1 kristianf kristianf 1200 Jul 9 00:41 trustdb.gpg ls: cannot access '/run/user/1000/gnupg': No such file or directory