2 # Apply defaults from/etc/gnupg/gpg.conf to all users -*- sh -*-
4 # Copyright 2007 Free Software Foundation, Inc.
6 # This file is free software; as a special exception the author gives
7 # unlimited permission to copy and/or distribute it, with or without
8 # modifications, as long as this notice is preserved.
10 # This file is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
12 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 PGM
=applygnupgdefaults
19 echo "$PGM: $*" >>$errorfile
27 echo "usage: $PGM" >&2
34 [ -n "$errorfile" -a -f "$errorfile" ] && rm "$errorfile"
36 trap cleanup EXIT SIGINT SIGHUP SIGPIPE
37 errorfile
="/tmp/$PGM.$$.log"
41 # Check whether we can use getent
42 if getent
--help </dev
/null
>/dev
/null
2>&1 ; then
43 cat_passwd
='getent passwd'
45 cat_passwd
='cat /etc/passwd'
46 info
"please note that only users from /etc/passwd are processed"
49 if [ ! -f /etc
/gnupg
/gpgconf.conf
]; then
50 error
"global configuration file \`/etc/gnupg/gpgconf.conf' does not exist"
53 if [ ! -f /etc
/shells
]; then
54 error
"missing file \`/etc/shells'"
58 if [ $
(id
-u) -ne 0 ]; then
59 error
"needs to be run as root"
64 |
while IFS
=: read -r user dmy_a uid dmy_c dmy_d home shell dmy_rest
; do
65 # Process only entires with a valid login shell
66 grep </etc
/shells
"^$shell" 2>/dev
/null
>/dev
/null ||
continue
67 # and with an existant gnupg home directory
68 [ -d "$home/.gnupg" ] ||
continue
70 [ "${uid:-0}" -eq 0 ] && continue
71 info
"running \"gpgconf --apply-defaults\" for $user"
73 -c 'gpgconf --apply-defaults && echo SUCCESS' $user \
74 |
tail -1 |
grep ^SUCCESS
>/dev
/null
; then
77 error
"failed to update gnupg defaults for $user"
81 [ "$(wc -c <$errorfile)" -gt 0 ] && exit 1