Name
chroot - change root directory
Synopsis
#include
<unistd.h>
int chroot(const char *path);
Description
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 the super-user may change the root directory.
Note that this call does not change the current working directory, so
that `.' 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 ..'.
Return
Value
On success, zero is returned. On error, -1 is returned, and
errno is
set appropriately.
Errors
Depending on the file system, other errors can
be returned. The more general errors are listed below:
- EPERM
- The effective
UID is not zero.
- EFAULT
- path points outside your accessible address space.
- 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.
- EACCES
- Search permission is denied on a component of the path prefix.
- ELOOP
- Too many symbolic links were encountered in resolving path.
- EIO
- An I/O error
occurred.
Conforming to
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.
See Also
chdir(2)
Add a comment | Add a link