chroot(2)


NAME

   chroot - change root directory

SYNOPSIS

   #include <unistd.h>

   int chroot(const char *path);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

   chroot():
       Since glibc 2.2.2:
           _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
               || /* Since glibc 2.20: */ _DEFAULT_SOURCE
               || /* Glibc versions <= 2.19: */ _BSD_SOURCE
       Before glibc 2.2.2: none

DESCRIPTION

   chroot()  changes  the  root  directory  of the calling process to that
   specified in path.  This directory will be used for pathnames beginning
   with /.  The root directory is inherited by all children of the calling
   process.

   Only  a  privileged  process  (Linux:  one  with   the   CAP_SYS_CHROOT
   capability in its user namespace) may call chroot().

   This  call changes an ingredient in the pathname resolution process and
   does nothing else.  In particular, it is not intended to  be  used  for
   any kind of security purpose, neither to fully sandbox a process nor to
   restrict filesystem system calls.  In the past, chroot() has been  used
   by  daemons  to  restrict themselves prior to passing paths supplied by
   untrusted users to system calls such as open(2).  However, if a  folder
   is  moved  out of the chroot directory, an attacker can exploit that to
   get out of the chroot directory as well.  The easiest way to do that is
   to  chdir(2) to the to-be-moved directory, wait for it to be moved out,
   then open a path like ../../../etc/passwd.

   A slightly trickier variation also works under  some  circumstances  if
   chdir(2)  is not permitted.  If a daemon allows a "chroot directory" to
   be specified, that usually means that if you  want  to  prevent  remote
   users  from  accessing  files  outside  the  chroot directory, you must
   ensure that folders are never moved out of it.

   This call does not change the current working directory, so that  after
   the call '.' can be outside the tree rooted at '/'.  In particular, the
   superuser can escape from a "chroot jail" by doing:

       mkdir foo; chroot foo; cd ..

   This  call  does  not  close  open  file  descriptors,  and  such  file
   descriptors may allow access to files outside the chroot tree.

RETURN VALUE

   On  success,  zero is returned.  On error, -1 is returned, and errno is
   set appropriately.

ERRORS

   Depending on the filesystem, other errors can be  returned.   The  more
   general errors are listed below:

   EACCES Search  permission  is denied on a component of the path prefix.
          (See also path_resolution(7).)

   EFAULT path points outside your accessible address space.

   EIO    An I/O error occurred.

   ELOOP  Too many symbolic links were encountered in resolving path.

   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.

   EPERM  The caller has insufficient privilege.

CONFORMING TO

   SVr4, 4.4BSD, SUSv2 (marked LEGACY).  This  function  is  not  part  of
   POSIX.1-2001.

NOTES

   A  child  process  created  via  fork(2)  inherits  its  parent's  root
   directory.  The root directory is left unchanged by execve(2).

   FreeBSD has a stronger jail() system call.

SEE ALSO

   chroot(1), chdir(2), pivot_root(2), path_resolution(7)

COLOPHON

   This page is part of release 4.09 of the Linux  man-pages  project.   A
   description  of  the project, information about reporting bugs, and the
   latest    version    of    this    page,    can     be     found     at
   https://www.kernel.org/doc/man-pages/.





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.