Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
CHROOT(2)                 FreeBSD System Calls Manual                CHROOT(2)

NAME
     chroot - change root directory

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <unistd.h>

     int
     chroot(const char *dirname);

DESCRIPTION
     Dirname is the address of the pathname of a directory, terminated by an
     ASCII NUL.  Chroot() causes dirname to become the root directory, that
     is, the starting point for path searches of pathnames beginning with `/'.

     In order for a directory to become the root directory a process must have
     execute (search) access for that directory.

     It should be noted that chroot() has no effect on the process's current
     directory.

     This call is restricted to the super-user.

     Depending on the setting of the `kern.chroot_allow_open_directories'
     sysctl variable, open filedescriptors which reference directories will
     make the chroot() fail as follows:

     If `kern.chroot_allow_open_directories' is set to zero, chroot() will
     always fail with EPERM if there are any directories open.

     If `kern.chroot_allow_open_directories' is set to one (the default),
     chroot() will fail with EPERM if there are any directories open and the
     process is already subject to a chroot() call.

     Any other value for `kern.chroot_allow_open_directories' will bypass the
     check for open directories

     Upon successful completion, a value of 0 is returned.  Otherwise, a value
     of -1 is returned and errno is set to indicate an error.

ERRORS
     Chroot() will fail and the root directory will be unchanged if:

     [ENOTDIR]          A component of the path name is not a directory.

     [EPERM]            The effective user ID is not the super-user, or one or
                        more filedescriptors are open directories.

     [ENAMETOOLONG]     A component of a pathname exceeded 255 characters, or
                        an entire path name exceeded 1023 characters.

     [ENOENT]           The named directory does not exist.

     [EACCES]           Search permission is denied for any component of the
                        path name.

     [ELOOP]            Too many symbolic links were encountered in
                        translating the pathname.

     [EFAULT]           Path points outside the process's allocated address
                        space.

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

SEE ALSO
     chdir(2), jail(2)

HISTORY
     The chroot() function call appeared in 4.2BSD.

FreeBSD 11.0-PRERELEASE          June 4, 1993          FreeBSD 11.0-PRERELEASE

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | ERRORS | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2&manpath=FreeBSD+4.5-RELEASE>

home | help