xref: /minix3/lib/libc/sys/chroot.2 (revision 2fe8fb192fe7e8720e3e7a77f928da545e872a6a)
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