#include #include #include //#define HASSETUGID 0 #define HASGETRESUID 1 main() { printf ("uid=%d, euid=%d, gid=%d, egid=%d\n", getuid(), geteuid(), getgid(), getegid()); #if defined(HASSETUGID) printf ("issetugid()=%d" % issetugid()); #endif #if defined(HASGETRESUID) uid_t ruid, euid, suid; gid_t rgid, egid, sgid; if ((getresuid(&ruid, &euid, &suid) == 0) && (getresgid(&rgid, &egid, &sgid) == 0)) { printf ("ruid=%d, euid=%d, suid=%d\n", ruid, euid, suid); printf ("rgid=%d, egid=%d, sgid=%d\n", rgid, egid, sgid); } #endif unsigned int oldeuid; oldeuid = geteuid(); if (seteuid(0) != 0) { printf ("cannot setuid(0)\n"); } else { printf ("can setuid(0)\n"); } }