summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-01-29 21:20:10 +0100
committerWerner Koch <wk@gnupg.org>2004-01-29 21:20:10 +0100
commita7840b96439352fe14b62c202725837e788285f0 (patch)
tree057cb679f018fb3b0c7368716302d0443c88cdc7
parent(reset_notify): Release the application context and (diff)
downloadgnupg2-a7840b96439352fe14b62c202725837e788285f0.tar.xz
gnupg2-a7840b96439352fe14b62c202725837e788285f0.zip
New.
-rw-r--r--tools/ChangeLog4
-rw-r--r--tools/Makefile.am2
-rwxr-xr-xtools/addgnupghome95
3 files changed, 100 insertions, 1 deletions
diff --git a/tools/ChangeLog b/tools/ChangeLog
index a382d05a5..215317967 100644
--- a/tools/ChangeLog
+++ b/tools/ChangeLog
@@ -1,3 +1,7 @@
+2004-01-29 Werner Koch <wk@gnupg.org>
+
+ * addgnupghome: New.
+
2004-01-29 Marcus Brinkmann <marcus@g10code.de>
* gpgconf-list.c: File removed.
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 09ba633f4..c24e4c7a3 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -17,7 +17,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-EXTRA_DIST = Manifest watchgnupg.c
+EXTRA_DIST = Manifest watchgnupg.c addgnupghome
localedir = $(datadir)/locale
INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
diff --git a/tools/addgnupghome b/tools/addgnupghome
new file mode 100755
index 000000000..20436b637
--- /dev/null
+++ b/tools/addgnupghome
@@ -0,0 +1,95 @@
+# !/bin/sh -*- sh -*-
+# Add a new .gnupg home directory for a list of users
+#
+# Copyright 2004 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=addgnupghome
+any_error=0
+
+error () {
+ echo "$PGM: $*" >&2
+ any_error=1
+}
+
+info () {
+ echo "$PGM: $*" >&2
+}
+
+# Do it for one user
+one_user () {
+ user="$1"
+ home=$(awk -F: -v n="$user" '$1 == n {print $6}' /etc/passwd )
+ if [ -z "$home" ]; then
+ if awk -F: -v n="$user" '$1 == n {exit 1}' /etc/passwd; then
+ error "no such user \`$user'"
+ else
+ error "no home directory for user \`$user'"
+ fi
+ return
+ fi
+ if [ ! -d "$home" ]; then
+ error "home directory \`$home' of user \`$user' does not exist"
+ return
+ fi
+ if [ -d "$home/.gnupg" ]; then
+ info "skipping user \`$user': \`.gnupg' already exists"
+ return
+ fi
+ info "creating home directory \`$home/.gnupg' for \`$user'"
+ if ! mkdir "$home/.gnupg" ; then
+ error "error creating \`$home/.gnupg'"
+ return
+ fi
+ if ! chown $user "$home/.gnupg" ; then
+ error "error changing ownership of \`$home/.gnupg'"
+ return
+ fi
+
+ if ! cd "$home/.gnupg" ; then
+ error "error cd-ing to \`$home/.gnupg'"
+ return
+ fi
+ for f in $filelist; do
+ if [ -d /etc/skel/.gnupg/$f ]; then
+ mkdir $f
+ else
+ cp /etc/skel/.gnupg/$f $f
+ fi
+ chown $user $f
+ done
+
+
+}
+
+if [ -z "$1" ]; then
+ echo "usage: $PGM userids"
+ exit 1
+fi
+
+if [ ! -d /etc/skel/.gnupg ]; then
+ error "skeleton directory \`/etc/skel/.gnupg' does not exist"
+ exit 1
+fi
+cd "/etc/skel/.gnupg" || (error "error cd-ing to \`/etc/skel/.gnupg'"; exit 1)
+filelist=$(find . \( -type f -or -type d \) -not -name '*~' -not -name . -print)
+
+
+
+if ! umask 0077 ; then
+ error "error setting umask"
+ exit 1
+fi
+
+for name in $*; do
+ one_user $name
+done
+
+exit $any_error