2011-02-04 12:57:53 +01:00
|
|
|
#!/bin/sh
|
2017-12-18 17:46:05 +01:00
|
|
|
# Apply defaults from /etc/gnupg/gpgconf.conf to all users -*- sh -*-
|
2007-03-07 20:55:14 +00:00
|
|
|
#
|
|
|
|
# Copyright 2007 Free Software Foundation, Inc.
|
|
|
|
#
|
|
|
|
# This file is free software; as a special exception the author gives
|
|
|
|
# unlimited permission to copy and/or distribute it, with or without
|
|
|
|
# modifications, as long as this notice is preserved.
|
|
|
|
#
|
|
|
|
# This file is distributed in the hope that it will be useful, but
|
|
|
|
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
|
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
PGM=applygnupgdefaults
|
|
|
|
errorfile=
|
|
|
|
|
|
|
|
error () {
|
|
|
|
echo "$PGM: $*" >&2
|
2009-12-18 16:26:50 +00:00
|
|
|
[ -n "$errorfile" ] && echo "$PGM: $*" >>$errorfile
|
2007-03-07 20:55:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
info () {
|
|
|
|
echo "$PGM: $*" >&2
|
|
|
|
}
|
|
|
|
|
2011-02-04 12:57:53 +01:00
|
|
|
if [ -n "$1" ]; then
|
2007-03-07 20:55:14 +00:00
|
|
|
echo "usage: $PGM" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Cleanup on exit
|
|
|
|
cleanup ()
|
|
|
|
{
|
|
|
|
[ -n "$errorfile" -a -f "$errorfile" ] && rm "$errorfile"
|
|
|
|
}
|
|
|
|
trap cleanup EXIT SIGINT SIGHUP SIGPIPE
|
2009-12-18 16:26:50 +00:00
|
|
|
errorfile=$(mktemp "/tmp/$PGM.log.XXXXXX")
|
|
|
|
[ -n "$errorfile" -a -f "$errorfile" ] || exit 2
|
2007-03-07 20:55:14 +00:00
|
|
|
|
|
|
|
# Check whether we can use getent
|
|
|
|
if getent --help </dev/null >/dev/null 2>&1 ; then
|
|
|
|
cat_passwd='getent passwd'
|
|
|
|
else
|
|
|
|
cat_passwd='cat /etc/passwd'
|
|
|
|
info "please note that only users from /etc/passwd are processed"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -f /etc/gnupg/gpgconf.conf ]; then
|
|
|
|
error "global configuration file \`/etc/gnupg/gpgconf.conf' does not exist"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ ! -f /etc/shells ]; then
|
|
|
|
error "missing file \`/etc/shells'"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $(id -u) -ne 0 ]; then
|
|
|
|
error "needs to be run as root"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
${cat_passwd} \
|
|
|
|
| while IFS=: read -r user dmy_a uid dmy_c dmy_d home shell dmy_rest; do
|
2009-12-18 16:26:50 +00:00
|
|
|
# Process only entries with a valid login shell
|
2007-03-07 20:55:14 +00:00
|
|
|
grep </etc/shells "^$shell" 2>/dev/null >/dev/null || continue
|
Fix more spelling
* NEWS, acinclude.m4, agent/command-ssh.c, agent/command.c,
agent/gpg-agent.c, agent/keyformat.txt, agent/protect-tool.c,
common/asshelp.c, common/b64enc.c, common/recsel.c, doc/DETAILS,
doc/HACKING, doc/Notes, doc/TRANSLATE, doc/dirmngr.texi,
doc/faq.org, doc/gpg-agent.texi, doc/gpg.texi, doc/gpgsm.texi,
doc/instguide.texi, g10/armor.c, g10/gpg.c, g10/keyedit.c,
g10/mainproc.c, g10/pkclist.c, g10/tofu.c, g13/sh-cmd.c,
g13/sh-dmcrypt.c, kbx/keybox-init.c, m4/pkg.m4, sm/call-dirmngr.c,
sm/gpgsm.c, tests/Makefile.am, tests/gpgscm/Manual.txt,
tests/gpgscm/scheme.c, tests/openpgp/gpgv-forged-keyring.scm,
tests/openpgp/multisig.test, tests/openpgp/verify.scm,
tests/pkits/README, tools/applygnupgdefaults,
tools/gpg-connect-agent.c, tools/mime-maker.c, tools/mime-parser.c:
minor spelling cleanup.
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
2016-09-15 14:21:15 -04:00
|
|
|
# and with an pre-existing gnupg home directory
|
2007-03-07 20:55:14 +00:00
|
|
|
[ -d "$home/.gnupg" ] || continue
|
|
|
|
# but not root
|
|
|
|
[ "${uid:-0}" -eq 0 ] && continue
|
|
|
|
info "running \"gpgconf --apply-defaults\" for $user"
|
|
|
|
if su -l -s /bin/sh \
|
|
|
|
-c 'gpgconf --apply-defaults && echo SUCCESS' $user \
|
|
|
|
| tail -1 | grep ^SUCCESS >/dev/null ; then
|
|
|
|
:
|
|
|
|
else
|
|
|
|
error "failed to update gnupg defaults for $user"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
[ "$(wc -c <$errorfile)" -gt 0 ] && exit 1
|
|
|
|
exit 0
|