diff options
Diffstat (limited to 'lib/libc/sys/jail.2')
-rw-r--r-- | lib/libc/sys/jail.2 | 414 |
1 files changed, 0 insertions, 414 deletions
diff --git a/lib/libc/sys/jail.2 b/lib/libc/sys/jail.2 deleted file mode 100644 index 82c2e97d4a7b..000000000000 --- a/lib/libc/sys/jail.2 +++ /dev/null @@ -1,414 +0,0 @@ -.\" Copyright (c) 1999 Poul-Henning Kamp. -.\" Copyright (c) 2009 James Gritton. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd February 19, 2021 -.Dt JAIL 2 -.Os -.Sh NAME -.Nm jail , -.Nm jail_get , -.Nm jail_set , -.Nm jail_remove , -.Nm jail_attach -.Nd create and manage system jails -.Sh LIBRARY -.Lb libc -.Sh SYNOPSIS -.In sys/param.h -.In sys/jail.h -.Ft int -.Fn jail "struct jail *jail" -.Ft int -.Fn jail_attach "int jid" -.Ft int -.Fn jail_remove "int jid" -.In sys/uio.h -.Ft int -.Fn jail_get "struct iovec *iov" "u_int niov" "int flags" -.Ft int -.Fn jail_set "struct iovec *iov" "u_int niov" "int flags" -.Sh DESCRIPTION -The -.Fn jail -system call sets up a jail and locks the current process in it. -.Pp -The argument is a pointer to a structure describing the prison: -.Bd -literal -offset indent -struct jail { - uint32_t version; - char *path; - char *hostname; - char *jailname; - unsigned int ip4s; - unsigned int ip6s; - struct in_addr *ip4; - struct in6_addr *ip6; -}; -.Ed -.Pp -.Dq Li version -defines the version of the API in use. -.Dv JAIL_API_VERSION -is defined for the current version. -.Pp -The -.Dq Li path -pointer should be set to the directory which is to be the root of the -prison. -.Pp -The -.Dq Li hostname -pointer can be set to the hostname of the prison. -This can be changed -from the inside of the prison. -.Pp -The -.Dq Li jailname -pointer is an optional name that can be assigned to the jail -for example for management purposes. -.Pp -The -.Dq Li ip4s -and -.Dq Li ip6s -give the numbers of IPv4 and IPv6 addresses that will be passed -via their respective pointers. -.Pp -The -.Dq Li ip4 -and -.Dq Li ip6 -pointers can be set to an arrays of IPv4 and IPv6 addresses to be assigned to -the prison, or NULL if none. -IPv4 addresses must be in network byte order. -.Pp -This is equivalent to, and deprecated in favor of, the -.Fn jail_set -system call (see below), with the parameters -.Va path , -.Va host.hostname , -.Va name , -.Va ip4.addr , -and -.Va ip6.addr , -and with the -.Dv JAIL_ATTACH -flag. -.Pp -The -.Fn jail_set -system call creates a new jail, or modifies an existing one, and optionally -locks the current process in it. -Jail parameters are passed as an array of name-value pairs in the array -.Fa iov , -containing -.Fa niov -elements. -Parameter names are a null-terminated string, and values may be strings, -integers, or other arbitrary data. -Some parameters are boolean, and do not have a value (their length is zero) -but are set by the name alone with or without a -.Dq no -prefix, e.g. -.Va persist -or -.Va nopersist . -Any parameters not set will be given default values, generally based on -the current environment. -.Pp -Jails have a set of core parameters, and modules can add their own jail -parameters. -The current set of available parameters, and their formats, can be -retrieved via the -.Va security.jail.param -sysctl MIB entry. -Notable parameters include those mentioned in the -.Fn jail -description above, as well as -.Va jid -and -.Va name , -which identify the jail being created or modified. -See -.Xr jail 8 -for more information on the core jail parameters. -.Pp -The -.Fa flags -arguments consists of one or more of the following flags: -.Bl -tag -width indent -.It Dv JAIL_CREATE -Create a new jail. -If a -.Va jid -or -.Va name -parameters exists, they must not refer to an existing jail. -.It Dv JAIL_UPDATE -Modify an existing jail. -One of the -.Va jid -or -.Va name -parameters must exist, and must refer to an existing jail. -If both -.Dv JAIL_CREATE -and -.Dv JAIL_UPDATE -are set, a jail will be created if it does not yet exist, and modified if it -does exist. -.It Dv JAIL_ATTACH -In addition to creating or modifying the jail, attach the current process to -it, as with the -.Fn jail_attach -system call. -.It Dv JAIL_DYING -Allow setting a jail that is in the process of being removed. -.El -.Pp -The -.Fn jail_get -system call retrieves jail parameters, using the same name-value list as -.Fn jail_set -in the -.Fa iov -and -.Fa niov -arguments. -The jail to read can be specified by either -.Va jid -or -.Va name -by including those parameters in the list. -If they are included but are not intended to be the search key, they -should be cleared (zero and the empty string respectively). -.Pp -The special parameter -.Va lastjid -can be used to retrieve a list of all jails. -It will fetch the jail with the jid above and closest to the passed value. -The first jail (usually but not always jid 1) can be found by passing a -.Va lastjid -of zero. -.Pp -The -.Fa flags -arguments consists of one or more following flags: -.Bl -tag -width indent -.It Dv JAIL_DYING -Allow getting a jail that is in the process of being removed. -.El -.Pp -The -.Fn jail_attach -system call attaches the current process to an existing jail, -identified by -.Fa jid . -It changes the process's root and current directories to the jail's -.Va path -directory. -.Pp -The -.Fn jail_remove -system call removes the jail identified by -.Fa jid . -It will kill all processes belonging to the jail, and remove any children -of that jail. -.Sh RETURN VALUES -If successful, -.Fn jail , -.Fn jail_set , -and -.Fn jail_get -return a non-negative integer, termed the jail identifier (JID). -They return \-1 on failure, and set -.Va errno -to indicate the error. -.Pp -.Rv -std jail_attach jail_remove -.Sh ERRORS -The -.Fn jail -system call -will fail if: -.Bl -tag -width Er -.It Bq Er EPERM -This process is not allowed to create a jail, either because it is not -the super-user, or because it would exceed the jail's -.Va children.max -limit. -.It Bq Er EFAULT -.Fa jail -points to an address outside the allocated address space of the process. -.It Bq Er EINVAL -The version number of the argument is not correct. -.It Bq Er EAGAIN -No free JID could be found. -.El -.Pp -The -.Fn jail_set -system call -will fail if: -.Bl -tag -width Er -.It Bq Er EPERM -This process is not allowed to create a jail, either because it is not -the super-user, or because it would exceed the jail's -.Va children.max -limit. -.It Bq Er EPERM -A jail parameter was set to a less restrictive value then the current -environment. -.It Bq Er EFAULT -.Fa Iov , -or one of the addresses contained within it, -points to an address outside the allocated address space of the process. -.It Bq Er ENOENT -The jail referred to by a -.Va jid -or -.Va name -parameter does not exist, and the -.Dv JAIL_CREATE -flag is not set. -.It Bq Er ENOENT -The jail referred to by a -.Va jid -is not accessible by the process, because the process is in a different -jail. -.It Bq Er EEXIST -The jail referred to by a -.Va jid -or -.Va name -parameter exists, and the -.Dv JAIL_UPDATE -flag is not set. -.It Bq Er EINVAL -A supplied parameter is the wrong size. -.It Bq Er EINVAL -A supplied parameter is out of range. -.It Bq Er EINVAL -A supplied string parameter is not null-terminated. -.It Bq Er EINVAL -A supplied parameter name does not match any known parameters. -.It Bq Er EINVAL -One of the -.Dv JAIL_CREATE -or -.Dv JAIL_UPDATE -flags is not set. -.It Bq Er ENAMETOOLONG -A supplied string parameter is longer than allowed. -.It Bq Er EAGAIN -There are no jail IDs left. -.El -.Pp -The -.Fn jail_get -system call -will fail if: -.Bl -tag -width Er -.It Bq Er EFAULT -.Fa Iov , -or one of the addresses contained within it, -points to an address outside the allocated address space of the process. -.It Bq Er ENOENT -The jail referred to by a -.Va jid -or -.Va name -parameter does not exist. -.It Bq Er ENOENT -The jail referred to by a -.Va jid -is not accessible by the process, because the process is in a different -jail. -.It Bq Er ENOENT -The -.Va lastjid -parameter is greater than the highest current jail ID. -.It Bq Er EINVAL -A supplied parameter is the wrong size. -.It Bq Er EINVAL -A supplied parameter name does not match any known parameters. -.El -.Pp -The -.Fn jail_attach -and -.Fn jail_remove -system calls -will fail if: -.Bl -tag -width Er -.It Bq Er EPERM -A user other than the super-user attempted to attach to or remove a jail. -.It Bq Er EINVAL -The jail specified by -.Fa jid -does not exist. -.El -.Pp -Further -.Fn jail , -.Fn jail_set , -and -.Fn jail_attach -call -.Xr chroot 2 -internally, so they can fail for all the same reasons. -Please consult the -.Xr chroot 2 -manual page for details. -.Sh SEE ALSO -.Xr chdir 2 , -.Xr chroot 2 , -.Xr jail 8 -.Sh HISTORY -The -.Fn jail -system call appeared in -.Fx 4.0 . -The -.Fn jail_attach -system call appeared in -.Fx 5.1 . -The -.Fn jail_set , -.Fn jail_get , -and -.Fn jail_remove -system calls appeared in -.Fx 8.0 . -.Sh AUTHORS -The jail feature was written by -.An Poul-Henning Kamp -for R&D Associates -who contributed it to -.Fx . -.An James Gritton -added the extensible jail parameters and hierarchical jails. |