I have two programs that (for all practical purposes) should be identical.
root@dirac:/tmp/ cat pids.c
#include
int main(int argc, const char *argv[])
{
return system("/usr/bin/id");
}
root@dirac:/tmp/ cat pids.sh
#! /bin/bash
/usr/bin/id
root@dirac:/tmp/ ls -l pids*
-rwsr-xr-x 1 root root 4814 Jan 18 23:16 pids
-rw-rw-rw- 1 root root 95 Jan 18 23:16 pids.c
-rwsr-xr-x 1 root root 25 Jan 19 09:38 pids.sh
root@dirac:/tmp/ su - hakonhal
hakonhal@dirac:~/ cd /tmp
hakonhal@dirac:/tmp/ ./pids
uid=1000(hakonhal) gid=1000(hakonhal) euid=0(root)
groups=1000(hakonhal),24(cdrom),40(src),100(users)
hakonhal@dirac:/tmp/ ./pids.sh
uid=1000(hakonhal) gid=1000(hakonhal)
groups=1000(hakonhal),24(cdrom),40(src),100(users)
hakonhal@dirac:/tmp/
Why do not pids.sh also report euid=0? Does this mean setuid/setgid on bash
scripts are useless and misleading?
Regards,
Håkon Hallingstad