|CHROOT(2)||Linux Programmer's Manual||CHROOT(2)|
NAMEchroot - change root directory
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
- Since glibc 2.2.2:
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
Before glibc 2.2.2: none
DESCRIPTIONchroot() changes the root directory of the calling process to that specified in path. This directory will be used for pathnames beginning with /. The root directory is inherited by all children of the calling process.
mkdir foo; chroot foo; cd ..
This call does not close open file descriptors, and such file descriptors may allow access to files outside the chroot tree.
RETURN VALUEOn success, zero is returned. On error, -1 is returned, and errno is set appropriately.
ERRORSDepending on the file system, other errors can be returned. The more general errors are listed below:
- Search permission is denied on a component of the path prefix. (See also path_resolution(7).)
- path points outside your accessible address space.
- An I/O error occurred.
- Too many symbolic links were encountered in resolving path.
- path is too long.
- The file does not exist.
- Insufficient kernel memory was available.
- A component of path is not a directory.
- The caller has insufficient privilege.
CONFORMING TOSVr4, 4.4BSD, SUSv2 (marked LEGACY). This function is not part of POSIX.1-2001.
NOTESA child process created via fork(2) inherits its parent's root directory. The root directory is left unchanged by execve(2).
SEE ALSOchdir(2), path_resolution(7)
COLOPHONThis page is part of release 3.53 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.