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);

     int
     fchroot(int fd);

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.

     If	the current working directory is not at	or under the new root direc-
     tory, it is silently set to the new root directory.  It should be noted
     that, on most other systems, chroot() has no effect on the	process's cur-
     rent directory.

     This call is restricted to	the super-user.

     The fchroot() function performs the same operation	on an open directory
     file known	by the file descriptor fd.

RETURN VALUES
     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.

     [ENAMETOOLONG]	A component of a pathname exceeded {NAME_MAX} charac-
			ters, or an entire path	name exceeded {PATH_MAX} char-
			acters.

     [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.

     [EPERM]		The effective user ID of the calling process is	not
			the super-user.

     fchroot() will fail and the root directory	will be	unchanged if:

     [EACCES]		Search permission is denied for	the directory refer-
			enced by the file descriptor.

     [EBADF]		The argument fd	is not a valid file descriptor.

     [EIO]		An I/O error occurred while reading from or writing to
			the file system.

     [ENOTDIR]		The argument fd	does not reference a directory.

     [EPERM]		The effective user ID of the calling process is	not
			the super-user.

SEE ALSO
     chdir(2)

STANDARDS
     The chroot() function conforms to X/Open System Interfaces	and Headers
     Issue 5 ("XSH5"), with the	restriction that the calling process' working
     directory must be at or under the new root	directory.  Otherwise, the
     working directory is silently set to the new root directory; this is an
     extension to the standard.

     chroot() was declared a legacy interface, and subsequently	removed	in
     IEEE Std 1003.1-2001 ("POSIX.1").

HISTORY
     The chroot() function call	appeared in 4.2BSD.  Working directory han-
     dling was changed in NetBSD 1.4 to	prevent	one way	a process could	use a
     second chroot() call to a different directory to "escape" from the	re-
     stricted subtree.	The fchroot() function appeared	in NetBSD 1.4.

BSD				April 18, 2001				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=fchroot&sektion=2&manpath=NetBSD+6.0>

home | help