e836f2a
#! /bin/sh
e836f2a
# Generates a random key for munged
e836f2a
#
e836f2a
# (C) 2007 Gennaro Oliva
e836f2a
# You may freely distribute this file under the terms of the GNU General
e836f2a
# Public License, version 2 or later.
e836f2a
e836f2a
#Setting default random file
e836f2a
randomfile=/dev/urandom
e836f2a
e836f2a
#Usage message
e836f2a
usage="Try \`$0 -h' for more information."
e836f2a
e836f2a
#Help message
e836f2a
needhelp() {
e836f2a
echo Usage: create-munge-key [OPTION]...
e836f2a
echo Generates a random key for munged
e836f2a
echo List of options
e836f2a
echo "  -f            force overwriting existing old key"
e836f2a
echo "  -r            specify /dev/random as random file for key generation"
e836f2a
echo "                default is /dev/urandom"
e836f2a
echo "  -h            display this help and exit"
e836f2a
}
e836f2a
e836f2a
#Parsing command line options
e836f2a
while getopts "hrf" options; do
e836f2a
  case $options in
e836f2a
    r ) randomfile=/dev/random;;
e836f2a
    f ) force=yes;;
e836f2a
    h ) needhelp
e836f2a
        exit 0;;
e836f2a
    \? ) echo $usage
e836f2a
         exit 1;;
e836f2a
    * ) echo $usage
e836f2a
          exit 1;;
e836f2a
  esac
e836f2a
done
e836f2a
e836f2a
if [ `id -u` != 0 ] ; then
e836f2a
  echo "Please run create-munge-key as root."
e836f2a
  exit 1
e836f2a
fi
e836f2a
e836f2a
e836f2a
#Checking random file presence
e836f2a
if [ ! -e $randomfile ] ; then 
e836f2a
  echo $0: cannot find random file $randomfile
e836f2a
  exit 1
e836f2a
fi
e836f2a
e836f2a
#Checking if the user want to overwrite existing key file
e836f2a
if [ "$force" != "yes" ] && [ -e /etc/munge/munge.key ] ; then
e836f2a
  echo The munge key /etc/munge/munge.key already exists
e836f2a
  echo -n "Do you want to overwrite it? (y/N) "
e836f2a
  read ans
e836f2a
  if [ "$ans" != "y" -a "$ans" != "Y" ] ; then
e836f2a
    exit 0
e836f2a
  fi
e836f2a
fi
e836f2a
e836f2a
#Generating the key file and change owner and permissions
e836f2a
if [ "$randomfile" = "/dev/random" ] ; then 
e836f2a
  echo Please type on the keyboard, echo move your mouse,
e836f2a
  echo utilize the disks. This gives the random number generator
e836f2a
  echo a better chance to gain enough entropy.
e836f2a
fi
e836f2a
echo -n "Generating a pseudo-random key using $randomfile "
e836f2a
dd if=$randomfile bs=1 count=1024 > /etc/munge/munge.key \
e836f2a
  2>/dev/null
e836f2a
chown munge:munge /etc/munge/munge.key
e836f2a
chmod 0400 /etc/munge/munge.key
e836f2a
echo completed.
e836f2a
exit 0