1*2fe8fb19SBen Gras.\" $NetBSD: chroot.2,v 1.23 2010/05/31 12:16:20 njoly Exp $ 2*2fe8fb19SBen Gras.\" 3*2fe8fb19SBen Gras.\" Copyright (c) 1983, 1991, 1993 4*2fe8fb19SBen Gras.\" The Regents of the University of California. All rights reserved. 5*2fe8fb19SBen Gras.\" 6*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without 7*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions 8*2fe8fb19SBen Gras.\" are met: 9*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright 10*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer. 11*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright 12*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer in the 13*2fe8fb19SBen Gras.\" documentation and/or other materials provided with the distribution. 14*2fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors 15*2fe8fb19SBen Gras.\" may be used to endorse or promote products derived from this software 16*2fe8fb19SBen Gras.\" without specific prior written permission. 17*2fe8fb19SBen Gras.\" 18*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19*2fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*2fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*2fe8fb19SBen Gras.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22*2fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23*2fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24*2fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25*2fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26*2fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27*2fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28*2fe8fb19SBen Gras.\" SUCH DAMAGE. 29*2fe8fb19SBen Gras.\" 30*2fe8fb19SBen Gras.\" @(#)chroot.2 8.1 (Berkeley) 6/4/93 31*2fe8fb19SBen Gras.\" 32*2fe8fb19SBen Gras.Dd April 18, 2001 33*2fe8fb19SBen Gras.Dt CHROOT 2 34*2fe8fb19SBen Gras.Os 35*2fe8fb19SBen Gras.Sh NAME 36*2fe8fb19SBen Gras.Nm chroot 37*2fe8fb19SBen Gras.Nd change root directory 38*2fe8fb19SBen Gras.Sh LIBRARY 39*2fe8fb19SBen Gras.Lb libc 40*2fe8fb19SBen Gras.Sh SYNOPSIS 41*2fe8fb19SBen Gras.In unistd.h 42*2fe8fb19SBen Gras.Ft int 43*2fe8fb19SBen Gras.Fn chroot "const char *dirname" 44*2fe8fb19SBen Gras.Ft int 45*2fe8fb19SBen Gras.Fn fchroot "int fd" 46*2fe8fb19SBen Gras.Sh DESCRIPTION 47*2fe8fb19SBen Gras.Fa dirname 48*2fe8fb19SBen Grasis the address of the pathname of a directory, terminated by an ASCII NUL. 49*2fe8fb19SBen Gras.Fn chroot 50*2fe8fb19SBen Grascauses 51*2fe8fb19SBen Gras.Fa dirname 52*2fe8fb19SBen Grasto become the root directory, 53*2fe8fb19SBen Grasthat is, the starting point for path searches of pathnames 54*2fe8fb19SBen Grasbeginning with 55*2fe8fb19SBen Gras.Ql / . 56*2fe8fb19SBen Gras.Pp 57*2fe8fb19SBen GrasIn order for a directory to become the root directory 58*2fe8fb19SBen Grasa process must have execute (search) access for that directory. 59*2fe8fb19SBen Gras.Pp 60*2fe8fb19SBen GrasIf the current working directory is not at or under the new root 61*2fe8fb19SBen Grasdirectory, it is silently set to the new root directory. 62*2fe8fb19SBen GrasIt should be noted that, on most other systems, 63*2fe8fb19SBen Gras.Fn chroot 64*2fe8fb19SBen Grashas no effect on the process's current directory. 65*2fe8fb19SBen Gras.Pp 66*2fe8fb19SBen GrasThis call is restricted to the super-user. 67*2fe8fb19SBen Gras.Pp 68*2fe8fb19SBen GrasThe 69*2fe8fb19SBen Gras.Fn fchroot 70*2fe8fb19SBen Grasfunction performs the same operation on an open directory file 71*2fe8fb19SBen Grasknown by the file descriptor 72*2fe8fb19SBen Gras.Fa fd . 73*2fe8fb19SBen Gras.Sh RETURN VALUES 74*2fe8fb19SBen GrasUpon successful completion, a value of 0 is returned. 75*2fe8fb19SBen GrasOtherwise, a value of \-1 is returned and 76*2fe8fb19SBen Gras.Va errno 77*2fe8fb19SBen Grasis set to indicate an error. 78*2fe8fb19SBen Gras.Sh ERRORS 79*2fe8fb19SBen Gras.Fn chroot 80*2fe8fb19SBen Graswill fail and the root directory will be unchanged if: 81*2fe8fb19SBen Gras.Bl -tag -width Er 82*2fe8fb19SBen Gras.It Bq Er ENOTDIR 83*2fe8fb19SBen GrasA component of the path name is not a directory. 84*2fe8fb19SBen Gras.It Bq Er ENAMETOOLONG 85*2fe8fb19SBen GrasA component of a pathname exceeded 86*2fe8fb19SBen Gras.Brq Dv NAME_MAX 87*2fe8fb19SBen Grascharacters, or an entire path name exceeded 88*2fe8fb19SBen Gras.Brq Dv PATH_MAX 89*2fe8fb19SBen Grascharacters. 90*2fe8fb19SBen Gras.It Bq Er ENOENT 91*2fe8fb19SBen GrasThe named directory does not exist. 92*2fe8fb19SBen Gras.It Bq Er EACCES 93*2fe8fb19SBen GrasSearch permission is denied for any component of the path name. 94*2fe8fb19SBen Gras.It Bq Er ELOOP 95*2fe8fb19SBen GrasToo many symbolic links were encountered in translating the pathname. 96*2fe8fb19SBen Gras.It Bq Er EFAULT 97*2fe8fb19SBen Gras.Fa dirname 98*2fe8fb19SBen Graspoints outside the process's allocated address space. 99*2fe8fb19SBen Gras.It Bq Er EIO 100*2fe8fb19SBen GrasAn I/O error occurred while reading from or writing to the file system. 101*2fe8fb19SBen Gras.It Bq Er EPERM 102*2fe8fb19SBen GrasThe effective user ID of the calling process is not the super-user. 103*2fe8fb19SBen Gras.El 104*2fe8fb19SBen Gras.Pp 105*2fe8fb19SBen Gras.Fn fchroot 106*2fe8fb19SBen Graswill fail and the root directory will be unchanged if: 107*2fe8fb19SBen Gras.Bl -tag -width Er 108*2fe8fb19SBen Gras.It Bq Er EACCES 109*2fe8fb19SBen GrasSearch permission is denied for the directory referenced 110*2fe8fb19SBen Grasby the file descriptor. 111*2fe8fb19SBen Gras.It Bq Er EBADF 112*2fe8fb19SBen GrasThe argument 113*2fe8fb19SBen Gras.Fa fd 114*2fe8fb19SBen Grasis not a valid file descriptor. 115*2fe8fb19SBen Gras.It Bq Er EIO 116*2fe8fb19SBen GrasAn I/O error occurred while reading from or writing to the file system. 117*2fe8fb19SBen Gras.It Bq Er ENOTDIR 118*2fe8fb19SBen GrasThe argument 119*2fe8fb19SBen Gras.Fa fd 120*2fe8fb19SBen Grasdoes not reference a directory. 121*2fe8fb19SBen Gras.It Bq Er EPERM 122*2fe8fb19SBen GrasThe effective user ID of the calling process is not the super-user. 123*2fe8fb19SBen Gras.El 124*2fe8fb19SBen Gras.Sh SEE ALSO 125*2fe8fb19SBen Gras.Xr chdir 2 126*2fe8fb19SBen Gras.Sh STANDARDS 127*2fe8fb19SBen GrasThe 128*2fe8fb19SBen Gras.Fn chroot 129*2fe8fb19SBen Grasfunction conforms to 130*2fe8fb19SBen Gras.St -xsh5 , 131*2fe8fb19SBen Graswith the restriction that the calling process' working directory must be at 132*2fe8fb19SBen Grasor under the new root directory. 133*2fe8fb19SBen GrasOtherwise, the working directory is silently set to the new root directory; 134*2fe8fb19SBen Grasthis is an extension to the standard. 135*2fe8fb19SBen Gras.Pp 136*2fe8fb19SBen Gras.Fn chroot 137*2fe8fb19SBen Graswas declared a legacy interface, and subsequently removed in 138*2fe8fb19SBen Gras.St -p1003.1-2001 . 139*2fe8fb19SBen Gras.Sh HISTORY 140*2fe8fb19SBen GrasThe 141*2fe8fb19SBen Gras.Fn chroot 142*2fe8fb19SBen Grasfunction call appeared in 143*2fe8fb19SBen Gras.Bx 4.2 . 144*2fe8fb19SBen GrasWorking directory handling was changed in 145*2fe8fb19SBen Gras.Nx 1.4 146*2fe8fb19SBen Grasto prevent one way a process could use a second 147*2fe8fb19SBen Gras.Fn chroot 148*2fe8fb19SBen Grascall to a different directory to "escape" from the restricted subtree. 149*2fe8fb19SBen GrasThe 150*2fe8fb19SBen Gras.Fn fchroot 151*2fe8fb19SBen Grasfunction appeared in 152*2fe8fb19SBen Gras.Nx 1.4 . 153