Originální popis anglicky:
chroot - change root directory
Návod, kniha: Linux Programmer's Manual
#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 a privileged process (Linux: one with the
CAP_SYS_CHROOT capability)
may call
chroot(2).
This call changes an ingredient in the pathname resolution process and does
nothing else.
This call does not change the current working directory, so that after the call
`.' 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 ..'.
This call does not close open file descriptors, and such file descriptors may
allow access to files outside the chroot tree.
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:
- EACCES
- Search permission is denied on a component of the path
prefix. (See also path_resolution(2).)
- EFAULT
- path points outside your accessible address
space.
- EIO
- An I/O error occurred.
- ELOOP
- Too many symbolic links were encountered in resolving
path.
- ENAMETOOLONG
- path is too long.
- ENOENT
- The file does not exist.
- ENOMEM
- Insufficient kernel memory was available.
- ENOTDIR
- A component of path is not a directory.
- EPERM
- The caller has insufficient privilege.
SVr4, SVID, 4.4BSD, X/OPEN. This function is not part of POSIX.1. SVr4 documents
additional EINTR, ENOLINK and EMULTIHOP error conditions. X/OPEN does not
document EIO, ENOMEM or EFAULT error conditions. This interface is marked as
legacy by X/OPEN.
FreeBSD has a stronger
jail() system call.
chdir(2),
path_resolution(2)