chroot(2) chroot(2) NAME chroot - change root directory SYNOPSIS #include <unistd.h> int chroot(const char *path); DESCRIPTION path points to a path name naming a directory. chroot causes the named directory to become the root directory, the starting point for path searches for path names beginning with /. The user's working directory is unaffected by the chroot system call. The calling process must have the super-user privilege to change the root directory. The .. entry in the root directory is interpreted to mean the root directory itself. Thus, .. cannot be used to access files outside the subtree rooted at the root directory. The value of systune(1M) variable allow_chroot_with_open_dirs controls the behavior of chroot(2) in the following manner: If the value is zero, chroot() will fail with EPERM if the calling process has any directories open. If the value is one (default value), chroot() will fail with EPERM if the calling process has any directories open, and has previously called chroot(2). For all values greater than one, checking for open directories is disabled. chroot will fail and the root directory will remain unchanged if one or more of the following are true: EACCES Search permission is denied on a component of the pathname. ELOOP Too many symbolic links were encountered in translating path. ENAMETOOLONG The length of the path argument exceeds {PATH_MAX}, or the length of a path component exceeds {NAME_MAX} while _POSIX_NO_TRUNC is in effect. EFAULT path points outside the allocated address space of the process. EINTR A signal was caught during the chroot system call. EMULTIHOP Components of path require hopping to multiple remote machines and file system type does not allow it. ENOLINK path points to a remote machine and the link to that machine is no longer active. ETIMEDOUT The named directory is located on a remote file system which is not available [see intro(2)]. ENOTDIR Any component of the path name is not a directory. ENOENT The named directory does not exist or is a null pathname. EPERM The calling process does not have the super-user privilege for changing the root directory. EPERM The rules regarding the systune(1M) variable allow_chroot_with_open_dirs have caused chroot(2) to fail as described above. SEE ALSO chdir(2). DIAGNOSTICS Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error. Page 2