chroot (2)


       chroot - change root directory


       #include <unistd.h>

       int chroot(const char *path);


       chroot  changes  the  root  directory  to that specified in path.  This
       directory will be used for path  names  beginning  with  /.   The  root
       directory is inherited by all children of the current process.

       Only the super-user may change the root directory.

       Note  that  this call does not change the current working directory, so
       that `.' can be outside the tree rooted at  `/'.   In  particular,  the
       super-user  can escape from a `chroot jail' by doing `mkdir foo; chroot
       foo; cd ..'.


       On success, zero is returned.  On error, -1 is returned, and  errno  is
       set appropriately.


       Depending  on  the file system, other errors can be returned.  The more
       general errors are listed below:

       EPERM  The effective UID is not zero.

       EFAULT path points outside your accessible address space.

              path is too long.

       ENOENT The file does not exist.

       ENOMEM Insufficient kernel memory was available.

              A component of path is not a directory.

       EACCES Search permission is denied on a component of the path prefix.

       ELOOP  Too many symbolic links were encountered in resolving path.

       EIO    An I/O error occurred.


       SVr4, SVID, 4.4BSD, X/OPEN.  This function  is  not  part  of  POSIX.1.
       SVr4  documents  additional  EINTR,  ENOLINK and EMULTIHOP error condi-
       tions.  X/OPEN does not document EIO, ENOMEM  or  EFAULT  error  condi-
       tions.  This interface is marked as legacy by X/OPEN.