NAME
chroot() — change root directory
SYNOPSIS
#include <unistd.h>
int chroot(const char *path);
DESCRIPTION
chroot()
causes the named directory to become the root directory,
the starting point for path searches for path names beginning with
/.
path
points to a path name naming a directory.
The user's working directory is unaffected by the
chroot()
system call.
The
..
entry in the root directory is interpreted to mean the root directory itself.
Thus,
..
cannot be used to access files outside the subtree
rooted at the root directory.
Security Restrictions
The effective user ID
of the process must be a user with the
CHROOT
privilege to change the root directory.
See
privileges(5)
for more information about privileged access on
systems that support fine-grained privileges.
RETURN VALUE
chroot()
returns the following values:
- 0
Successful completion.
- -1
Failure.
errno
is set to indicate the error.
ERRORS
chroot()
fails and the root directory remains unchanged if
one or more of the following is true:
- ENOTDIR
Any component of the path name is not a directory.
- ENOENT
The named directory does not exist or a component of the
path
does not exist.
- EPERM
The effective user
ID
is not a user who has
the
CHROOT
privilege.
- EFAULT
path
points outside the allocated address space of the process.
The reliable detection of this error is implementation dependent.
- ENAMETOOLONG
The length of the specified path name exceeds
PATH_MAX
bytes, or the length of a component of the path name exceeds
NAME_MAX
bytes while
_POSIX_NO_TRUNC
is in effect.
- ELOOP
Too many symbolic links were encountered in translating the path
name.
WARNINGS
Obsolescent Interfaces
chroot()
is to be obsoleted at a future date.
STANDARDS CONFORMANCE
chroot(): AES, SVID2, SVID3, XPG2, XPG3, XPG4