summaryrefslogtreecommitdiff
path: root/coreutils/id_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/id_test.sh')
-rwxr-xr-xcoreutils/id_test.sh244
1 files changed, 244 insertions, 0 deletions
diff --git a/coreutils/id_test.sh b/coreutils/id_test.sh
new file mode 100755
index 0000000..0d65f2a
--- /dev/null
+++ b/coreutils/id_test.sh
@@ -0,0 +1,244 @@
+#!/bin/bash
+# Test script for busybox id vs. coreutils id.
+# Needs root privileges for some tests.
+
+cp /usr/bin/id .
+BUSYBOX=./busybox
+ID=./id
+LIST=`awk -F: '{ printf "%s\n", $1 }' /etc/passwd`
+FLAG_USER_EXISTS="no"
+TEST_USER="f583ca884c1d93458fb61ed137ff44f6"
+
+echo "test 1: id [options] nousername"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+done
+
+echo "test 2: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ if test "$i" = "$TEST_USER"; then
+ FLAG_USER_EXISTS="yes"
+ fi
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+if test $FLAG_USER_EXISTS = "yes"; then
+ echo "test 3,4,5,6,7,8,9,10,11,12 skipped because test user $TEST_USER already exists"
+ rm -f foo bar
+ exit 1
+fi
+
+adduser -s /bin/true -g "" -H -D "$TEST_USER" || exit 1
+
+chown $TEST_USER.$TEST_USER $BUSYBOX
+chmod u+s $BUSYBOX 2>&1 /dev/null
+chown $TEST_USER.$TEST_USER $ID
+chmod u+s $ID 2>&1 /dev/null
+
+echo "test 3 setuid, existing user: id [options] no username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ #done
+done
+
+echo "test 4 setuid, existing user: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+chown $TEST_USER.$TEST_USER $BUSYBOX
+chmod g+s $BUSYBOX 2>&1 /dev/null
+chown $TEST_USER.$TEST_USER $ID
+chmod g+s $ID 2>&1 /dev/null
+
+echo "test 5 setgid, existing user: id [options] no username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ #done
+done
+
+echo "test 6 setgid, existing user: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+chown $TEST_USER.$TEST_USER $BUSYBOX
+chmod u+s,g+s $BUSYBOX 2>&1 /dev/null
+chown $TEST_USER.$TEST_USER $ID
+chmod u+s,g+s $ID 2>&1 /dev/null
+
+echo "test 7 setuid, setgid, existing user: id [options] no username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ #done
+done
+
+echo "test 8 setuid, setgid, existing user: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+deluser $TEST_USER || exit 1
+
+echo "test 9 setuid, setgid, not existing user: id [options] no username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+done
+
+echo "test 10 setuid, setgid, not existing user: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+chown .root $BUSYBOX 2>&1 /dev/null
+chown .root $ID 2>&1 /dev/null
+chmod g+s $BUSYBOX 2>&1 /dev/null
+chmod g+s $ID 2>&1 /dev/null
+
+echo "test 11 setgid, not existing group: id [options] no username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ $BUSYBOX id $OPTIONS >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ #done
+done
+
+echo "test 12 setgid, not existing group: id [options] username"
+rm -f foo bar
+for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
+do
+ #echo "$OPTIONS"
+ for i in $LIST ; do
+ $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
+ RET1=$?
+ $ID $OPTIONS $i >bar 2>/dev/null
+ RET2=$?
+ if test "$RET1" != "$RET2"; then
+ echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
+ fi
+ diff foo bar
+ done
+done
+
+chown root.root $BUSYBOX 2>&1 /dev/null
+chown root.root $ID 2>&1 /dev/null
+rm -f $ID
+rm -f foo bar