Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
JAIL.CONF(5)		       File Formats Manual		    JAIL.CONF(5)

NAME
     jail.conf -- configuration file for system jails

DESCRIPTION
     The  jail.conf file consists of one or more jail definitions statements for
     use by the jail(8) management program.  A jail  definition  statement  con-
     sists  of	a  single  word, the name of the jail, an opening curly brace, a
     list of at least two parameter assignments, and a closing curly  brace.   A
     parameter	assignment  consists  of  a  single word, the parameter name, an
     equals sign, a value enclosed in double quotes,  and  a  terminating  semi-
     colon.

     The syntax of a jail definition is as follows:

	   jailname {
	       parameter = "value";
	       ...
	   }

     This  is  used  by jail(8) to specify a jail on the command line and report
     the jail status, and is also passed to the kernel when creating the jail.

   Parameters
     A jail is defined by a set of named parameters, specified inside  the  jail
     definition.   See	jail(8) for a list of jail parameters passed to the ker-
     nel, as well as internal parameters used when creating and removing jails.

     A typical parameter has a name and a value.  Some	parameters  are  boolean
     and  may  be  specified  with  values of "true" or "false", or as valueless
     shortcuts, with a "no" prefix indicating a false value.  For example, these
     are equivalent:

	   allow.mount = "false";
	   allow.nomount;

     Other parameters may have more than one value.  A comma-separated	list  of
     values  may be set in a single statement, or an existing parameter list may
     be appended to using "+=":

	   ip4.addr = 10.1.1.1, 10.1.1.2, 10.1.1.3;

	   ip4.addr = 10.1.1.1;
	   ip4.addr += 10.1.1.2;
	   ip4.addr += 10.1.1.3;

     Note the name parameter is implicitly set to the name in the  jail  defini-
     tion.

   String format
     Parameter	values,  including  jail  names,  can be single tokens or quoted
     strings.  A token is any sequence of characters  that  are  not  considered
     special  in  the  syntax  of the configuration file (such as a semicolon or
     whitespace).  If a value contains	anything  more	than  letters,	numbers,
     dots,  dashes  and  underscores,  it is advisable to put quote marks around
     that value.  Either single or double quotes may be used.

     Special characters may be quoted by preceding them with a backslash.   Com-
     mon C-style backslash character codes are also supported, including control
     characters  and octal or hex ASCII codes.	A backslash at the end of a line
     will ignore the subsequent newline and continue the string at the start  of
     the next line.

   Variables
     A	string	may use shell-style variable substitution.  A parameter or vari-
     able name preceded by a dollar sign, and possibly enclosed in braces,  will
     be  replaced  with the value of that parameter or variable.  For example, a
     jail's path may be defined in terms of its name or hostname:

	   path = "/var/jail/$name";

	   path = "/var/jail/${host.hostname}";

     Variable  substitution  occurs  in  unquoted  tokens  or  in  double-quoted
     strings, but not in single-quote strings.

     A variable is defined in the same way a parameter is, except that the vari-
     able name is preceded with a dollar sign:

	   $parentdir = "/var/jail";
	   path = "$parentdir/$name";

     The  difference between parameters and variables is that variables are only
     used for substitution, while parameters are used both for substitution  and
     for passing to the kernel.

   Wildcards
     A jail definition with a name of "*" is used to define wildcard parameters.
     Every defined jail will contain both the parameters from its own definition
     statement, as well as any parameters in a wildcard definition.

     Variable substitution is done on a per-jail basis, even when that substitu-
     tion  is for a parameter defined in a wildcard section.  This is useful for
     wildcard parameters based on e.g., a jail's name.

     Later definitions in the configuration file supersede earlier  ones,  so  a
     wildcard section placed before (above) a jail definition defines parameters
     that  could  be  changed on a per-jail basis.  Or a wildcard section placed
     after (below) all jails would contain parameters that always apply to every
     jail.  Multiple wildcard statements are allowed,  and  wildcard  parameters
     may also be specified outside of a jail definition statement.

     If  hierarchical  jails are defined, a partial-matching wildcard definition
     may be specified.	For example, a definition with a name of  "foo.*"  would
     apply to jails with names like "foo.bar" and "foo.bar.baz".

   Includes
     A line of the form

	  .include "filename";

     will  include  another  file (or files) in the configuration.  The filename
     should be either absolute, or relative to the configuration  file's  direc-
     tory.   It cannot contain variable expansions, but may contain glob(3) pat-
     terns.

     The included file must exist, though a filename glob may match zero or more
     files.  This allows inclusion of any/all files  in  a  directory,	such  as
     "/etc/jail.conf.d/*.conf",  or conditional inclusion of a single file, such
     as "jail.foo[.]conf".

   Comments
     The configuration file may contain comments in the common C, C++, and shell
     formats:

	   /* This is a C style comment.
	    * It may span multiple lines.
	    */

	   // This is a C++ style comment.

	   #  This is a shell style comment.

     Comments are legal wherever whitespace is allowed, i.e., anywhere except in
     the middle of a string or a token.

FILES
     /etc/jail.conf
     /etc/jail.*.conf
     /etc/jail.conf.d/*.conf
     /usr/share/examples/jails/

EXAMPLES
     # Typical static defaults:
     # Use the rc scripts to start and stop jails.  Mount jail's /dev.
     exec.start = "/bin/sh /etc/rc";
     exec.stop = "/bin/sh /etc/rc.shutdown jail";
     exec.clean;
     mount.devfs;

     # Dynamic wildcard parameter:
     # Base the path off the jail name.
     path = "/var/jail/$name";

     # A typical jail.
     foo {
	     host.hostname = "foo.com";
	     ip4.addr = 10.1.1.1, 10.1.1.2, 10.1.1.3;
     }

     # This jail overrides the defaults defined above.
     bar {
	     exec.start = '';
	     exec.stop = '';
	     path = /;
	     mount.nodevfs;
	     persist;	     // Required because there are no processes
     }

     # Include configurations from standard locations.
     .include "/etc/jail.conf.d/*.conf";
     .include "/etc/jail.*.conf";
     .include "/usr/local/etc/jail[.]conf";
     .include "/usr/local/etc/jail.conf.d/*.conf";
     .include "/usr/local/etc/jail.*.conf";

SEE ALSO
     jail(2), jail(3), jail(3lua), rc.conf(5), jail(8), jexec(8),  jls(8),  zfs-
     jail(8)

     The "Jails and Containers" chapter of the FreeBSD Handbook.

HISTORY
     The  jail(8) utility appeared in FreeBSD 4.0.  The jail.conf file was added
     in FreeBSD 9.1.

AUTHORS
     The jail feature was written by Poul-Henning Kamp for  R&D  Associates  who
     contributed it to FreeBSD.

     James Gritton added the extensible jail parameters and configuration file.

FreeBSD ports 15.1	       September 21, 2024		    JAIL.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=jail.conf&sektion=5&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help