blob: 1228c013d6181a3b170c0a2f38ff0fab2269a489 [file] [log] [blame]
#!/bin/sh
#*********************************************************************
# Copyright (c) International Business Machines Corp., 2003, 2004
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
# the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this pronram; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# FILE : su
#
# PURPOSE: Tests the basic functionality of `su`.
#
# SETUP: The program `/usr/bin/expect' MUST be installed.
#
# HISTORY:
# 03/03 Dustin Kirkland (dkirklan@us.ibm.com)
# 03/03 Jerone Young (jeroney@us.ibm.com)
# 10/01/04 Kris Wilson Port to Red Hat
#
#*********************************************************************
if [ -z ${TCbin} ]
then
export TCbin=$PWD
fi
export TEST_USER1="su_usr1"
tvar=${MACHTYPE%-*}
tvar=${tvar#*-}
# need to export tvar for su01_s1
export tvar
printf "Machine type is: $tvar\n\n"
if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
# Need to also set group for TEST_USER2
then
export TEST_USER1_GROUP="wheel"
export TEST_USER2_GROUP="wheel"
else
export TEST_USER1_GROUP="trusted"
export TEST_USER2_GROUP="trusted"
fi
export TEST_USER1_PASSWD="eal"
export TEST_USER1_ENCRYPTED_PASSWD="42VmxaOByKwlA"
export TEST_USER1_NEW_PASSWD="a_very_good_and_long_password"
export TEST_USER1_HOMEDIR="/home/$TEST_USER1"
export TEST_USER2="su_usr2"
# Group needs to be trusted for Red Hat.
#export TEST_USER2_GROUP="trusted"
export TEST_USER2_PASSWD="eal"
export TEST_USER2_ENCRYPTED_PASSWD="42VmxaOByKwlA"
export TEST_USER2_HOMEDIR="/home/$TEST_USER2"
#This is for enviroment test
export TEST_LINE="YOU_HAVE_THE_VARIABLE"
export TEST_ENV_FILE="/tmp/TEST_ENV_FILE_ROOT"
export TEST_ENV_FILE_USER="/tmp/TEST_ENV_FILE_USER"
export TEST_ENV_FILE2="/tmp/TEST_ENV_FILE_ROOT2"
#-----------------------------------------------------------------------
# FUNCTION: do_setup
#-----------------------------------------------------------------------
do_setup(){
#REMOVE ANY TEMPOARY FILES THAT MAY STILL BE AROUND
rm -f $TEST_ENV_FILE_USER > /dev/null 2>&1
rm -f $TEST_ENV_FILE2 > /dev/null 2>&1
rm -f $TEST_ENV_FILE > /dev/null 2>&1
#Create 1st test user
#erase user if he may exist , so we can have a clean en
rm -rf /home/$TEST_USER1
userdel $TEST_USER1
sleep 1
useradd -m -g users $TEST_USER1
if [ $? != 0 ]
then {
echo "Could not add test user $TEST_USER1."
exit 1
}
fi
usermod -G users,$TEST_USER1_GROUP $TEST_USER1
#create users home directory (SLES 8 does not do this, even when specified in adduser)
# Only do this if not RH; RH creates the directory.
if [ "$tvar" != "redhat" -a "$tvar" != "redhat-linux" ]
then {
USER_UID=`id -u $TEST_USER1`
USER_GID=`id -g $TEST_USER1`
mkdir $TEST_USER1_HOMEDIR
chown -R $USER_UID.$USER_GID $TEST_USER1_HOMEDIR
}
fi
usermod -p $TEST_USER1_ENCRYPTED_PASSWD $TEST_USER1 > /dev/null 2>&1
if [ $? != 0 ]
then {
echo "Could not set password for test user $TEST_USER1"
exit 1
}
fi
#Create 2nd test user
#erase user if he may exist , so we can have a clean en
rm -rf /home/$TEST_USER2
userdel $TEST_USER2
sleep 1
useradd -m -g users $TEST_USER2
if [ $? != 0 ]
then {
echo "Could not add test user $TEST_USER2."
exit 1
}
fi
usermod -G users,$TEST_USER2_GROUP $TEST_USER2
#create users home diretory (SLES 8 does not do this, even when specified in adduser)
# Only do this if not RH; RH creates the directory.
if [ "$tvar" != "redhat" -a "$tvar" != "redhat-linux" ]
then {
USER_UID=`id -u $TEST_USER2`
USER_GID=`id -g $TEST_USER2`
mkdir $TEST_USER2_HOMEDIR
chown -R $USER_UID.$USER_GID $TEST_USER2_HOMEDIR
}
fi
usermod -p $TEST_USER2_ENCRYPTED_PASSWD $TEST_USER2 > /dev/null 2>&1
if [ $? != 0 ]
then {
echo "Could not set password for test user $TEST_USER2"
exit 1
}
fi
}
#-----------------------------------------------------------------------
# FUNCTION: do_cleanup
#-----------------------------------------------------------------------
do_cleanup() {
rm -rf /home/$TEST_USER1
rm -rf /home/$TEST_USER2
userdel $TEST_USER1
userdel $TEST_USER2
#REMOVE ANY TEMPOARY FILES THAT MAY STILL BE AROUND
rm -f $TEST_ENV_FILE_USER > /dev/null 2>&1
rm -f $TEST_ENV_FILE2 > /dev/null 2>&1
rm -f $TEST_ENV_FILE > /dev/null 2>&1
}
#-----------------------------------------------------------------------
# FUNCTION: MAIN
#-----------------------------------------------------------------------
do_setup
/bin/su $TEST_USER1 -c ${TCbin}/su01_s1
EXIT_CODE=$?
do_cleanup
exit $EXIT_CODE