manpages.info - online man pages   

FreeBSD man pages : chroot (2)
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 translat- ing the pathname. [EFAULT] dirname 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 4.8 June 4, 1993 FreeBSD 4.8