#include #include #include #include #include #include #define ROOTDIR "/home/whatnot" #define CWDDIR "/foo" static char *env[] = { "TERM=vt100", "HOME=/cvsup", NULL }; int main() { const int uid=271; const int gid=271; if (chroot(ROOTDIR) != 0) { printf("Failed setting new root dir.\n"); exit(1); } if (chdir(CWDDIR) != 0) { printf("Failed changing dir.\n"); exit(1); } // open socket if (setgid(gid) != 0) { printf("Failed setting GID.\n"); exit(1); } if (setuid(uid) != 0) { printf("Failed setting UID.\n"); exit(1); } if (execle("/bin/myprog", "myprog", "-s", NULL, env)) { printf("Failed executing program.\n"); exit(1); } return(0); }