153 lines
4.0 KiB
Bash
Executable File
153 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# Check if the user and group given in arguments
|
|
# exit in /etc/passwd and /etc/group, and create
|
|
# them if necessary.
|
|
#
|
|
|
|
|
|
# take 4 arguments : username
|
|
# groupname
|
|
# automatic answer
|
|
# the src dir
|
|
|
|
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
|
|
if test -d /usr/ucb; then
|
|
PATH=/usr/ucb:$PATH
|
|
fi
|
|
|
|
if test $# -ne 4; then
|
|
echo "Too few/many arguments"
|
|
exit 1
|
|
fi
|
|
|
|
USERNAME=$1
|
|
GROUPNAME=$2
|
|
ANSWER=$3
|
|
SRCDIR=$4
|
|
|
|
INSTALL="nothing"
|
|
INSTALLED=0
|
|
|
|
if test `uname -s` = "FreeBSD"; then
|
|
IS_FREEBSD=1
|
|
else
|
|
IS_FREEBSD=0
|
|
fi
|
|
|
|
if test $IS_FREEBSD -eq 1; then
|
|
CMD="pw groupadd $GROUPNAME"
|
|
else
|
|
CMD="groupadd $GROUPNAME"
|
|
fi
|
|
|
|
echo -n "Checking if group $GROUPNAME exists ... "
|
|
if $SRCDIR/script/has_usrgrp.pl -group "$GROUPNAME"; then
|
|
echo "yes."
|
|
INSTALLED=1
|
|
else
|
|
echo "no."
|
|
if test -z "$CMD"; then
|
|
echo "Could not determine the command to use to add a group."
|
|
echo "Please add group \"GROUPNAME\" manually"
|
|
echo "(or choose another groupname with configure script)."
|
|
exit 1
|
|
fi
|
|
if test "$ANSWER" -eq 2; then
|
|
while test \( ! -z "$INSTALL" \) -a \( "$INSTALL" != "y" \) -a \( "$INSTALL" != "n" \);
|
|
do
|
|
echo "Would you like to add $GROUPNAME in /etc/passwd with the following command ?"
|
|
echo " $CMD"
|
|
echo "If you use NYS, ldap, etc, you should add the group manually (say no here)"
|
|
echo -n "Please answer with 'y' or 'n' (default: 'y'): "
|
|
read INSTALL NOTHING
|
|
done
|
|
if test \( -z "$INSTALL" \) -o \( "$INSTALL" = "y" \); then
|
|
if $CMD; then
|
|
INSTALLED=1
|
|
fi
|
|
fi
|
|
elif test "$ANSWER" -eq 1; then
|
|
# automatic answer given by configure script (option --with-answer-all)
|
|
if $CMD; then
|
|
INSTALLED=1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
if test "$INSTALLED" -eq 0; then
|
|
echo
|
|
echo "Group \"$GROUPNAME\" does not exist : please create it or choose"
|
|
echo "another groupname with configure script."
|
|
exit 1
|
|
fi
|
|
|
|
INSTALL="nothing"
|
|
INSTALLED=0
|
|
|
|
echo -n "Checking if user $USERNAME exists ... "
|
|
if $SRCDIR/script/has_usrgrp.pl -user "$USERNAME"; then
|
|
echo "yes."
|
|
INSTALLED=1
|
|
else
|
|
echo "no."
|
|
CMD=""
|
|
if test "$IS_FREEBSD" -eq 1; then
|
|
CMD="pw useradd $USERNAME -c $USERNAME"
|
|
elif useradd -D 2> /dev/null; then
|
|
CMD="useradd -c '$USERNAME' -g $GROUPNAME $USERNAME"
|
|
elif adduser -D 2> /dev/null; then
|
|
CMD="adduser -c '$USERNAME' -g $GROUPNAME $USERNAME"
|
|
fi
|
|
if test -z "$CMD"; then
|
|
echo "Could not determine the command to use to add a user."
|
|
echo "Please add user \"$USERNAME\" (group \"GROUPNAME\") manually"
|
|
echo "(or choose another username with configure script)."
|
|
exit 1
|
|
fi
|
|
if test "$ANSWER" -eq 2; then
|
|
while test \( ! -z "$INSTALL" \) -a \( "$INSTALL" != "y" \) -a \( "$INSTALL" != "n" \);
|
|
do
|
|
echo "Would you like to add $USERNAME in /etc/passwd with the following command ?"
|
|
echo " $CMD"
|
|
echo "If you use NYS, ldap, or similar, you should add the user manually (say no here)"
|
|
echo -n "Please answer with 'y' or 'n' (default: 'y'): "
|
|
read INSTALL NOTHING
|
|
done
|
|
if test \( -z "$INSTALL" \) -o \( "$INSTALL" = "y" \); then
|
|
if $CMD; then
|
|
INSTALLED=1
|
|
fi
|
|
fi
|
|
elif test "$ANSWER" -eq 1; then
|
|
# automatic answer given by configure script (option --with-answer-all)
|
|
if $CMD; then
|
|
INSTALLED=1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
if test "$INSTALLED" -eq 0; then
|
|
echo
|
|
echo "User \"$USERNAME\" does not exist : please create it or choose another"
|
|
echo "username with configure script."
|
|
exit 1
|
|
else
|
|
USERGID="`$SRCDIR/script/has_usrgrp.pl -user "$USERNAME" -printgid`"
|
|
GID="`$SRCDIR/script/has_usrgrp.pl -group "$GROUPNAME" -printgid`"
|
|
if test \( "$USERGID" = "" \) -o \( "$GID" = "" \); then
|
|
echo "Could not check if \"$USERNAME\" is in the group \"$GROUPNAME\" :"
|
|
echo "please do it manually."
|
|
fi
|
|
|
|
if test "$GID" -ne "$USERGID"; then
|
|
echo
|
|
echo "User $USERNAME exists, but is not in the group $GROUPNAME."
|
|
echo "Please set its group to \"$GROUPNAME\" (id $GID) manually"
|
|
echo "(or choose another user and/or group)."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|