chroot, fchroot - change root directory


     #include <unistd.h>

     int chroot(const char *path);

     int fchroot(int fildes);


     The chroot() and  fchroot() functions cause a  directory  to
     become  the  root  directory,  the  starting  point for path
     searches for path names beginning with / (slash). The user's
     working   directory   is  unaffected  by  the  chroot()  and
     fchroot() functions.

     The path argument points to a path name naming a  directory.
     The fildes argument to fchroot() is the open file descriptor
     of the directory which is to become the root.

     The effective user ID of the process must be  super-user  to
     change  the  root  directory. While it is always possible to
     change to the system root using the fchroot()  function,  it
     is  not guaranteed to succeed in any other case, even should
     fildes be valid in all respects.

     The ".." entry in the root directory is interpreted to  mean
     the root directory itself. Therefore, ".." cannot be used to
     access files outside the subtree rooted at the  root  direc-
     tory.  Instead, fchroot() can be used to reset the root to a
     directory that was opened  before  the  root  directory  was


     Upon successful completion, 0 is returned. Otherwise, -1  is
     returned, the root directory remains unchanged, and errno is
     set to indicate the error.


     The chroot() function will fail if:

           Search permission is denied for  a  component  of  the
           path prefix of dirname, or search permission is denied
           for the directory referred to by dirname.

     EBADF The descriptor is not valid.

           The path argument points to an illegal address.

           The fchroot() function attempted to change to a direc-
           tory  the  is  not  the  system root and external cir-
           cumstances do not allow this.

     EINTR A signal  was  caught  during  the  execution  of  the
           chroot() function.

     EIO   An I/O error occurred while reading from or writing to
           the file system.

     ELOOP Too many symbolic links were encountered in  translat-
           ing path.

           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.

           The named directory does not exist or is a null  path-

           The path argument points to a remote machine  and  the
           link to that machine is no longer active.

           Any component of the path name is not a directory.

     EPERM The effective user  of  the  calling  process  is  not


     chroot(1M), chdir(2)


     The only use of fchroot() that is appropriate is  to  change
     back to the system root.

Man(1) output converted with man2html