Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Sep 1999 20:35:54 +0200
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        tomb <tomb@cgf.net>
Cc:        freebsd-security@FreeBSD.ORG
Subject:   Re: What's this jail thing? 
Message-ID:  <21903.938457354@critter.freebsd.dk>
In-Reply-To: Your message of "Mon, 27 Sep 1999 11:09:10 PDT." <37EFB2C6.6240D4D3@cgf.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <37EFB2C6.6240D4D3@cgf.net>, tomb writes:

>Would someone be kind enought to point me toward an explanation of what
>the jail concept is, it sounds like it could be an interesting security
>feature.


JAIL(2) 		  FreeBSD System Calls Manual		       JAIL(2)

NAME
     jail - Imprison current process and future decendants.

SYNOPSIS
     #include <sys/types.h>
     #include <sys/jail.h>

     int
     jail(struct jail *jail)

DESCRIPTION
     The jail system call sets up a jail and locks the current process in it.

     The argument is a pointer to a structure describing the prison:

	   struct jail {
		   char *path;
		   char *hostname;
		   u_int32_t ip_number;
	   };

     The ``path'' pointer should be set to the directory which is to be the
     root of the prison.

     The ``hostname'' pointer can be set the hostname of the prison.  This can
     be changed from the inside of the prison.

     The ``ip_number'' can be set to the IP number assigned to the prison.

PRISON ?
     Once a process has been put in a prison, it and its decendants cannot es-
     cape the prison.  It is not possible to add a process to a preexisting
     prison.

     Inside the prison, the concept of "superuser" is very diluted, in general
     it can be assumed that nothing can be mangled from inside a prison, that
     doesn't exist inside that prison (ie: the directory tree below ``path''.

     All IP activity will be forced to happen to/from the IP number specified,
     which should be an alias on one of the systems interfaces.

     It is possible to identify a process as jailed by examining
     ``/proc/<pid>/status'': it will show a field near the end of the line,
     either as a single hyphen for a process at large, or the hostname cur-
     rently set for the prison for jailed processes.

ERRORS
     Jail() calls chroot(2) internally, so the it can fail for all the same
     reasons.  Please consult the chroot(2) manual page for details.

SEE ALSO
     chroot(2) chdir(2)

HISTORY
     The jail() function call appeared in FreeBSD 4.0.

     The jail feature was written by Poul-Henning Kamp for R&D Associates
     ``http://www.rndassociates.com/'' who contributed it to FreeBSD.

FreeBSD 4.0			April 28, 1999				     1

--
Poul-Henning Kamp             FreeBSD coreteam member
phk@FreeBSD.ORG               "Real hackers run -current on their laptop."
FreeBSD -- It will take a long time before progress goes too far!


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?21903.938457354>