Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CHROOT(2)		    BSD	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 al-
     ways 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.

BSD				 June 4, 1993				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | ERRORS | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=chroot&sektion=2&manpath=FreeBSD+4.9-RELEASE>

home | help