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