You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.5 KiB
181 lines
5.5 KiB
#!/bin/bash |
|
#********************************************************************* |
|
# 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 program; if not, write to the Free Software |
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 |
|
# |
|
#********************************************************************* |
|
|
|
echo "This script contains bashism that needs to be fixed!" |
|
|
|
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 |
|
getent passwd $TEST_USER1 > /dev/null 2>&1 && 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 -p $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 |
|
getent passwd $TEST_USER2 > /dev/null 2>&1 && 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 -p $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
|
|
|