diff options
author | Werner Koch <[email protected]> | 2020-09-09 18:33:06 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-09-09 18:34:59 +0000 |
commit | 8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a (patch) | |
tree | 947d8f12edf65d7db0707659087780f17fc0d7ad /agent | |
parent | kbx: Change X.509 S/N search definition. (diff) | |
download | gnupg-8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a.tar.gz gnupg-8ed85ef3de9cdeee86e281a8b46be1bd49a36e7a.zip |
agent: Keep some permissions of private-keys-v1.d.
* common/sysutils.c (modestr_to_mode): Re-implement.
(gnupg_chmod): Support keeping of permissions.
--
GnuPG-bug-id: 2312
Diffstat (limited to 'agent')
-rw-r--r-- | agent/gpg-agent.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index bbad80074..f167c96db 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -2273,10 +2273,20 @@ create_private_keys_directory (const char *home) fname, strerror (errno) ); else if (!opt.quiet) log_info (_("directory '%s' created\n"), fname); + + if (gnupg_chmod (fname, "-rwx")) + log_error (_("can't set permissions of '%s': %s\n"), + fname, strerror (errno)); + } + else + { + /* The file exists or another error. Make sure we have sensible + * permissions. We enforce rwx for user but keep existing group + * permissions. Permissions for other are always cleared. */ + if (gnupg_chmod (fname, "-rwx...---")) + log_error (_("can't set permissions of '%s': %s\n"), + fname, strerror (errno)); } - if (gnupg_chmod (fname, "-rwx")) - log_error (_("can't set permissions of '%s': %s\n"), - fname, strerror (errno)); xfree (fname); } |