- Add following global jail options, used if no jail-specific options are

set:
 * jail_mount_enable
 * jail_devfs_ruleset
 * jail_devfs_enable
 * jail_fdescfs_enable
 * jail_procfs_enable
 * jail_fstab
 * jail_flags
- Add a jail_interface / jail_<jid>_interface option. An ip alias will be
created (jail_<jid>_ip) on jail_interface or jail_<jid>_interface if set.
This is not a mandatory option.
- Document all missing jail_* options in rc.conf(5).

Approved by:	cperciva (mentor)
MFC after:	2 weeks
This commit is contained in:
Florent Thoumie 2006-04-08 12:15:36 +00:00
parent 99d3c2c46c
commit 69beb663f5
2 changed files with 194 additions and 15 deletions

View File

@ -33,9 +33,10 @@ init_variables()
jail_procdir="${jail_rootdir}/proc"
eval jail_hostname=\"\$jail_${_j}_hostname\"
eval jail_ip=\"\$jail_${_j}_ip\"
eval jail_interface=\"\${jail_${_j}_interface:-${jail_interface}}\"
eval jail_exec=\"\$jail_${_j}_exec\"
eval jail_exec_start=\"\$jail_${_j}_exec_start\"
eval jail_exec_stop=\"\$jail_${_j}_exec_stop\"
eval jail_exec_start=\"\${jail_${_j}_exec_start:-${jail_exec_start}}\"
eval jail_exec_stop=\"\${jail_${_j}_exec_stop:-${jail_exec_stop}}\"
if [ -n "${jail_exec}" ]; then
# simple/backward-compatible execution
jail_exec_start="${jail_exec}"
@ -51,20 +52,20 @@ init_variables()
fi
# The default jail ruleset will be used by rc.subr if none is specified.
eval jail_ruleset=\"\$jail_${_j}_devfs_ruleset\"
eval jail_devfs=\"\$jail_${_j}_devfs_enable\"
eval jail_ruleset=\"\${jail_${_j}_devfs_ruleset:-${jail_devfs_ruleset}}\"
eval jail_devfs=\"\${jail_${_j}_devfs_enable:-${jail_devfs_enable}}\"
[ -z "${jail_devfs}" ] && jail_devfs="NO"
eval jail_fdescfs=\"\$jail_${_j}_fdescfs_enable\"
eval jail_fdescfs=\"\${jail_${_j}_fdescfs_enable:-${jail_fdescfs_enable}}\"
[ -z "${jail_fdescfs}" ] && jail_fdescfs="NO"
eval jail_procfs=\"\$jail_${_j}_procfs_enable\"
eval jail_procfs=\"\${jail_${_j}_procfs_enable:-${jail_procfs_enable}}\"
[ -z "${jail_procfs}" ] && jail_procfs="NO"
eval jail_mount=\"\$jail_${_j}_mount_enable\"
eval jail_mount=\"\${jail_${_j}_mount_enable:-${jail_mount_enable}}\"
[ -z "${jail_mount}" ] && jail_mount="NO"
# "/etc/fstab.${_j}" will be used for {,u}mount(8) if none is specified.
eval jail_fstab=\"\$jail_${_j}_fstab\"
eval jail_fstab=\"\${jail_${_j}_fstab:-${jail_fstab}}\"
[ -z "${jail_fstab}" ] && jail_fstab="/etc/fstab.${_j}"
eval jail_flags=\"\$jail_${_j}_flags\"
eval jail_flags=\"\${jail_${_j}_flags:-${jail_flags}}\"
[ -z "${jail_flags}" ] && jail_flags="-l -U root"
# Debugging aid
@ -75,6 +76,7 @@ init_variables()
debug "$_j mount enable: $jail_mount"
debug "$_j hostname: $jail_hostname"
debug "$_j ip: $jail_ip"
debug "$_j interface: $jail_interface"
debug "$_j root: $jail_rootdir"
debug "$_j devdir: $jail_devdir"
debug "$_j fdescdir: $jail_fdescdir"
@ -162,6 +164,9 @@ jail_start()
echo -n " [${jail_hostname} already running (/var/run/jail_${_jail}.id exists)]"
continue;
fi
if [ -n ${jail_interface} ]; then
ifconfig ${jail_interface} alias ${jail_ip} netmask 255.255.255.255
fi
if checkyesno jail_mount; then
info "Mounting fstab for jail ${_jail} (${jail_fstab})"
if [ ! -f "${jail_fstab}" ]; then
@ -234,6 +239,9 @@ jail_stop()
jail_umount_fs
echo -n " $jail_hostname"
fi
if [ -n ${jail_interface} ]; then
ifconfig ${jail_interface} -alias ${jail_ip}
fi
rm /var/run/jail_${_jail}.id
else
echo "cannot stop jail ${_jail}. No jail id in /var/run"

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd February 13, 2006
.Dd April 8, 2006
.Dt RC.CONF 5
.Os
.Sh NAME
@ -2975,13 +2975,184 @@ you would have the following dependent variables:
jail_vjail_hostname="jail.example.com"
jail_vjail_ip="192.168.1.100"
jail_vjail_rootdir="/var/jails/vjail/root"
jail_vjail_exec="/bin/sh /etc/rc"
.Ed
.Pp
The last one is optional.
It defaults to
.Pa /etc/rc
if it is not set.
.It Va jail_flags
.Pq Vt str
Unset by default.
When set, use as default value for
.Va jail_ Ns Ao Ar jid Ac Ns Va _flags
for every jail in
.Va jail_list .
.It Va jail_interface
.Pq Vt str
Unset by default.
When set, use as default value for
.Va jail_ Ns Ao Ar jid Ac Ns Va _interface
for every jail in
.Va jail_list .
.It Va jail_fstab
.Pq Vt str
Unset by default.
When set, use as default value for
.Va jail_ Ns Ao Ar jid Ac Ns Va _fstab
for every jail in
.Va jail_list .
.It Va jail_mount_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
sets
.Va jail_ Ns Ao Ar jid Ac Ns Va _mount_enable
to YES by default for every jail in
.Va jail_list .
.It Va jail_devfs_ruleset
.Pq Vt str
Unset by default.
When set, sets
.Va jail_ Ns Ao Ar jid Ac Ns Va _devfs_ruleset
to given value for every jail in
.Va jail_list .
.It Va jail_devfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
sets
.Va jail_ Ns Ao Ar jid Ac Ns Va _devfs_enable
to YES by default for every jail in
.Va jail_list .
.It Va jail_fdescfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
sets
.Va jail_ Ns Ao Ar jid Ac Ns Va _fdescfs_enable
to YES by default for every jail in
.Va jail_list .
.It Va jail_procfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
sets
.Va jail_ Ns Ao Ar jid Ac Ns Va _fdescfs_enable
to YES by default for every jail in
.Va jail_list .
.It Va jail_exec_start
.Pq Vt str
Unset by default.
When set, use as default value for
.Va jail_ Ns Ao Ar jid Ac Ns Va _exec_start
for every jail in
.Va jail_list .
.It Va jail_exec_stop
Unset by default.
When set, use as default value for
.Va jail_ Ns Ao Ar jid Ac Ns Va _exec_stop
for every jail in
.Va jail_list .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _rootdir
.Pq Vt str
Unset by default.
Set to the root directory used by jail
.Va jid .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _hostname
.Pq Vt str
Unset by default.
Set to the fully qualified domain name (FQDN) assigned to jail
.Va jid .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _ip
.Pq Vt str
Unset by default.
Set to the IP address assigned to jail
.Va jid .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _flags
.Pq Vt str
Set to
.Dq Li -l -U root
by default.
These are flags to pass to
.Xr jail .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _interface
.Pq Vt str
Unset by default.
When set, sets the interface to use when setting IP address alias.
Note that the alias is created at jail startup and removed at jail shutdown.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _fstab
.Pq Vt str
Set to
.Pa /etc/fstab. Ns Ao Ar jid Ac
by default.
This is the file system information file to use for jail
.Va jid .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _mount_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
mount all file systems from
.Va jail_ Ns Ao Ar jid Ac Ns Va _fstab
at jail startup.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _devfs_ruleset
.Pq Vt str
Unset by default.
When set, defines the device file system ruleset file to use for jail
.Va jid .
.It Va jail_ Ns Ao Ar jid Ac Ns Va _devfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
mount the device file system inside jail
.Ar jid
at jail startup.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _fdescfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
mount the file-descriptor file system inside jail
.Ar jid
at jail startup.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _procfs_enable
.Pq Vt bool
Set to
.Dq Li NO
by default.
When set to
.Dq Li YES ,
mount the process file system inside jail
.Ar jid
at jail startup.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _exec_start
.Pq Vt str
Set to
.Dq Li /bin/sh /etc/rc
by default.
This is the command executed at jail startup.
.It Va jail_ Ns Ao Ar jid Ac Ns Va _exec_stop
.Pq Vt str
Set to
.Dq Li /bin/sh /etc/rc.shutdown
by default.
This is the command executed at jail shutdown.
.It Va jail_set_hostname_allow
.Pq Vt bool
If set to