chroot(2)




NAME

     chroot, fchroot - change root directory


SYNOPSIS

     #include <unistd.h>

     int chroot(const char *path);

     int fchroot(int fildes);


DESCRIPTION

     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
     changed.


RETURN VALUES

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


ERRORS

     The chroot() function will fail if:

     EACCES
           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.

     EFAULT
           The path argument points to an illegal address.

     EINVAL
           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.

     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.

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

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

     ENOTDIR
           Any component of the path name is not a directory.

     EPERM The effective user  of  the  calling  process  is  not
           super-user.


SEE ALSO

     chroot(1M), chdir(2)


WARNINGS

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


Man(1) output converted with man2html