Merge branch 'Teaman-ND' into Teaman-RT
[tomato.git] / release / src / router / busybox / coreutils / id_test.sh
blob0d65f2ae31cdba01bea9828dbd8a86c8459ff9a4
1 #!/bin/bash
2 # Test script for busybox id vs. coreutils id.
3 # Needs root privileges for some tests.
5 cp /usr/bin/id .
6 BUSYBOX=./busybox
7 ID=./id
8 LIST=`awk -F: '{ printf "%s\n", $1 }' /etc/passwd`
9 FLAG_USER_EXISTS="no"
10 TEST_USER="f583ca884c1d93458fb61ed137ff44f6"
12 echo "test 1: id [options] nousername"
13 rm -f foo bar
14 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
16 #echo "$OPTIONS"
17 $BUSYBOX id $OPTIONS >foo 2>/dev/null
18 RET1=$?
19 $ID $OPTIONS >bar 2>/dev/null
20 RET2=$?
21 if test "$RET1" != "$RET2"; then
22 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
24 diff foo bar
25 done
27 echo "test 2: id [options] username"
28 rm -f foo bar
29 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
31 #echo "$OPTIONS"
32 for i in $LIST ; do
33 if test "$i" = "$TEST_USER"; then
34 FLAG_USER_EXISTS="yes"
36 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
37 RET1=$?
38 $ID $OPTIONS $i >bar 2>/dev/null
39 RET2=$?
40 if test "$RET1" != "$RET2"; then
41 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
43 diff foo bar
44 done
45 done
47 if test $FLAG_USER_EXISTS = "yes"; then
48 echo "test 3,4,5,6,7,8,9,10,11,12 skipped because test user $TEST_USER already exists"
49 rm -f foo bar
50 exit 1
53 adduser -s /bin/true -g "" -H -D "$TEST_USER" || exit 1
55 chown $TEST_USER.$TEST_USER $BUSYBOX
56 chmod u+s $BUSYBOX 2>&1 /dev/null
57 chown $TEST_USER.$TEST_USER $ID
58 chmod u+s $ID 2>&1 /dev/null
60 echo "test 3 setuid, existing user: id [options] no username"
61 rm -f foo bar
62 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
64 #echo "$OPTIONS"
65 $BUSYBOX id $OPTIONS >foo 2>/dev/null
66 RET1=$?
67 $ID $OPTIONS >bar 2>/dev/null
68 RET2=$?
69 if test "$RET1" != "$RET2"; then
70 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
72 diff foo bar
73 #done
74 done
76 echo "test 4 setuid, existing user: id [options] username"
77 rm -f foo bar
78 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
80 #echo "$OPTIONS"
81 for i in $LIST ; do
82 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
83 RET1=$?
84 $ID $OPTIONS $i >bar 2>/dev/null
85 RET2=$?
86 if test "$RET1" != "$RET2"; then
87 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
89 diff foo bar
90 done
91 done
93 chown $TEST_USER.$TEST_USER $BUSYBOX
94 chmod g+s $BUSYBOX 2>&1 /dev/null
95 chown $TEST_USER.$TEST_USER $ID
96 chmod g+s $ID 2>&1 /dev/null
98 echo "test 5 setgid, existing user: id [options] no username"
99 rm -f foo bar
100 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
102 #echo "$OPTIONS"
103 $BUSYBOX id $OPTIONS >foo 2>/dev/null
104 RET1=$?
105 $ID $OPTIONS >bar 2>/dev/null
106 RET2=$?
107 if test "$RET1" != "$RET2"; then
108 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
110 diff foo bar
111 #done
112 done
114 echo "test 6 setgid, existing user: id [options] username"
115 rm -f foo bar
116 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
118 #echo "$OPTIONS"
119 for i in $LIST ; do
120 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
121 RET1=$?
122 $ID $OPTIONS $i >bar 2>/dev/null
123 RET2=$?
124 if test "$RET1" != "$RET2"; then
125 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
127 diff foo bar
128 done
129 done
131 chown $TEST_USER.$TEST_USER $BUSYBOX
132 chmod u+s,g+s $BUSYBOX 2>&1 /dev/null
133 chown $TEST_USER.$TEST_USER $ID
134 chmod u+s,g+s $ID 2>&1 /dev/null
136 echo "test 7 setuid, setgid, existing user: id [options] no username"
137 rm -f foo bar
138 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
140 #echo "$OPTIONS"
141 $BUSYBOX id $OPTIONS >foo 2>/dev/null
142 RET1=$?
143 $ID $OPTIONS >bar 2>/dev/null
144 RET2=$?
145 if test "$RET1" != "$RET2"; then
146 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
148 diff foo bar
149 #done
150 done
152 echo "test 8 setuid, setgid, existing user: id [options] username"
153 rm -f foo bar
154 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
156 #echo "$OPTIONS"
157 for i in $LIST ; do
158 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
159 RET1=$?
160 $ID $OPTIONS $i >bar 2>/dev/null
161 RET2=$?
162 if test "$RET1" != "$RET2"; then
163 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
165 diff foo bar
166 done
167 done
169 deluser $TEST_USER || exit 1
171 echo "test 9 setuid, setgid, not existing user: id [options] no username"
172 rm -f foo bar
173 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
175 #echo "$OPTIONS"
176 $BUSYBOX id $OPTIONS >foo 2>/dev/null
177 RET1=$?
178 $ID $OPTIONS >bar 2>/dev/null
179 RET2=$?
180 if test "$RET1" != "$RET2"; then
181 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
183 diff foo bar
184 done
186 echo "test 10 setuid, setgid, not existing user: id [options] username"
187 rm -f foo bar
188 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
190 #echo "$OPTIONS"
191 for i in $LIST ; do
192 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
193 RET1=$?
194 $ID $OPTIONS $i >bar 2>/dev/null
195 RET2=$?
196 if test "$RET1" != "$RET2"; then
197 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
199 diff foo bar
200 done
201 done
203 chown .root $BUSYBOX 2>&1 /dev/null
204 chown .root $ID 2>&1 /dev/null
205 chmod g+s $BUSYBOX 2>&1 /dev/null
206 chmod g+s $ID 2>&1 /dev/null
208 echo "test 11 setgid, not existing group: id [options] no username"
209 rm -f foo bar
210 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
212 #echo "$OPTIONS"
213 $BUSYBOX id $OPTIONS >foo 2>/dev/null
214 RET1=$?
215 $ID $OPTIONS >bar 2>/dev/null
216 RET2=$?
217 if test "$RET1" != "$RET2"; then
218 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
220 diff foo bar
221 #done
222 done
224 echo "test 12 setgid, not existing group: id [options] username"
225 rm -f foo bar
226 for OPTIONS in "" "-u" "-un" "-unr" "-g" "-gn" "-gnr" "-G" "-Gn" "-Gnr"
228 #echo "$OPTIONS"
229 for i in $LIST ; do
230 $BUSYBOX id $OPTIONS $i >foo 2>/dev/null
231 RET1=$?
232 $ID $OPTIONS $i >bar 2>/dev/null
233 RET2=$?
234 if test "$RET1" != "$RET2"; then
235 echo "Return Values differ ($RET1 != $RET2): options $OPTIONS"
237 diff foo bar
238 done
239 done
241 chown root.root $BUSYBOX 2>&1 /dev/null
242 chown root.root $ID 2>&1 /dev/null
243 rm -f $ID
244 rm -f foo bar