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