Passbolt/fcron-3.2.0/script/user-group

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