/* * Here we play with the UID related system calls */ #define _GNU_SOURCE #include #include #include #include #include /* Prototypes */ static void display_uids(void); int main(void) { uid_t r, e, s; /* Display uids */ display_uids(); /* Pause */ (void) fprintf(stdout, "Hit return to continue"); (void) fgetc(stdin); return (0); } /* Display current real, effective and saved uids */ static void display_uids(void) { uid_t ruid, euid, suid; /* Retrieve real, effective and saved uids */ if (getresuid(&ruid, &euid, &suid) < 0) { perror("getresuid()"); exit(EXIT_FAILURE); } (void) fprintf(stdout, "Real uid:\t%d\n", (int)ruid); (void) fprintf(stdout, "Effective uid:\t%d\n", (int)euid); (void) fprintf(stdout, "Saved uid:\t%d\n", (int)suid); }