#include #include #define ROOT "/home/cvsuser/jail" #define REPOSITORY "/repository" /* Look up uid of cvsuser in /etc/passwd */ #define OWNER_UID 501 /* Look up gid of cvsuser in /etc/group */ #define OWNER_GID 501 int main(int argc, char *argv[]) { int res; /* Why do this? See doc/cvs.info-8, Node: Connection. */ /* (Suggested by Scott Bronson) */ unsetenv("HOME"); res = chdir(ROOT); if ( res ) exit(1); res = chroot(ROOT); if ( res ) exit(2); res = setresgid(OWNER_GID, OWNER_GID, OWNER_GID); if ( res ) exit(3); res = setresuid(OWNER_UID, OWNER_UID, OWNER_UID); if ( res ) exit(4); execl("/bin/cvs", "cvs", "-f", "--allow-root=" REPOSITORY, "pserver", NULL); exit(5); }