svn commit: r340319 - head/usr.sbin/jail

H. Schmalzbauer - OmniLAN h.schmalzbauer at omnilan.de
Sat Nov 10 13:10:37 UTC 2018


Am 10.11.2018 um 13:33 schrieb Eugene Grosbein:
> 10.11.2018 19:12, Bjoern A. Zeeb wrote:
>
>>> Author: eugen
>>> Date: Sat Nov 10 12:03:57 2018
>>> New Revision: 340319
>>> URL: https://svnweb.freebsd.org/changeset/base/340319
>>>
>>> Log:
>>>    jail(8): introduce new command option -e to exhibit
>>>    a list of configured non-wildcard jails with their parameters,
>>>    no matter running or not.
>>>
>>>    The option -e takes separator argument that is used
>>>    to separate printed parameters. It will be used with following
>>>    additions to system periodic scripts to differentiate parts
>>>    of directory tree belonging jails as opposed to host's.
>>  From reading this and the man page changes I have a hard time to understand what this does.
>>
>> What is a “wildcard jail” or a “non-wildcard jail”?
> Modern jail configuration style assumes usage of jail.conf file

I was quiet unhappy with the single jail.conf(5) in /etc, so I extended 
jail rc(8) to support /etc/jail.conf.d/

Probably some others would welcome jail.conf.d/ too.  Unfortunately I 
don't have enough time to stay focused with one feature, so all my 
extensions are somewhat hackish.
In this case, it's part of a jail setup script (I'm aware that there are 
many ports out ther which claim to ease jail management, but all to much 
more and nothing I could get a start point with satisfaction, so I wrote 
my own, wich _only_ utilizes base tools).

Essentialy, it's about
+++ /etc/rc.d/jail    2017-09-28 13:55:35.109528000 +0000
@@ -127,6 +128,9 @@
          if [ -r "$_jconf" ]; then
              _conf="$_jconf"
              return 0
+        elif [ -r /etc/jail.conf.d/${_j} ]; then
+            _conf="/etc/jail.conf.d/${_j}"
+            return 0
          elif [ -r "$jail_conf" ]; then
              _conf="$jail_conf"
              return 0'
   fi

Do you think that jail.conf.d/ should be considered as future extension?


The setup script itself is also a handler for mounted md_images, so in 
case it's found, the diff is a little bigger in order to take care to 
attach/detach md(4).  Here's the correspondig rc-patch function - happy 
to mail the whole script on request:

patch_rc_jail(){
   :verbosemsg "patch_rc_jail() ${1:+called with $@}"
   local PATCH line patchfile
   PATCH=$(which patch 2>/dev/null)
   [ -n "${PATCH}" ] || return
   patchfile="$(mktemp)"
   if [ -x /usr/sbin/jailsetup ]; then
     abtvar='--- /etc/rc.d/jail.orig    2017-09-28 13:45:35.213478000 +0000
+++ /etc/rc.d/jail    2017-09-28 13:55:35.109528000 +0000
@@ -26,6 +26,7 @@
  : ${jail_consolecmd:=/usr/bin/login -f root}
  : ${jail_jexec:=/usr/sbin/jexec}
  : ${jail_jls:=/usr/sbin/jls}
+: ${jail_setup:=/usr/sbin/jailsetup}

  need_dad_wait=

@@ -127,6 +128,9 @@
          if [ -r "$_jconf" ]; then
              _conf="$_jconf"
              return 0
+        elif [ -r /etc/jail.conf.d/${_j} ]; then
+            _conf="/etc/jail.conf.d/${_j}"
+            return 0
          elif [ -r "$jail_conf" ]; then
              _conf="$jail_conf"
              return 0
@@ -476,6 +480,7 @@
          # jail_parallel_start is YES.
          #
          for _j in $@; do
+            [ -x $jail_setup ] && $jail_setup mdattach -n ${_j}
              _j=$(echo $_j | tr /. _)
              _jv=$(echo -n $_j | tr -c '"'"[:alnum:]"'"' _)
              parse_options $_j $_jv || continue
@@ -504,6 +509,7 @@
          # Start jails one-by-one when jail_parallel_start is NO.
          #
          for _j in $@; do
+            [ -x $jail_setup ] && $jail_setup mdattach -n ${_j}
              _j=$(echo $_j | tr /. _)
              _jv=$(echo -n $_j | tr -c '"'"[:alnum:]"'"' _)
              parse_options $_j $_jv || continue
@@ -556,6 +562,7 @@
              fi
              rm -f $_tmp
          done
+        [ -x $jail_setup ] && $jail_setup mddetach
          echo '"'"."'"'
          return
      ;;
@@ -578,6 +585,7 @@
              rm -f /var/run/jail_${_j}.id
          fi
          rm -f $_tmp
+        [ -x $jail_setup ] && $jail_setup mddetach -n ${_j}
      done
      echo '"'"."'"'
  }'
   else
     abtvar='--- /etc/rc.d/jail.orig    2017-09-28 13:45:35.213478000 +0000
+++ /etc/rc.d/jail    2017-09-28 13:55:35.109528000 +0000
@@ -127,6 +128,9 @@
          if [ -r "$_jconf" ]; then
              _conf="$_jconf"
              return 0
+        elif [ -r /etc/jail.conf.d/${_j} ]; then
+            _conf="/etc/jail.conf.d/${_j}"
+            return 0
          elif [ -r "$jail_conf" ]; then
              _conf="$jail_conf"
              return 0'
   fi
   echo "${abtvar}" > "${patchfile}"
   ${PATCH} -p 0 -C -i "${patchfile}" >/dev/null 2>&1 || return
   ${PATCH} -p 0 -i "${patchfile}" >/dev/null 2>&1 &&
     cp /etc/rc.d/jail.orig /var/backups 2>/dev/null
   [ -e /etc/rc.d/jail.rej ] && unlink /etc/rc.d/jail.rej
   rm /etc/rc.d/jail.orig "${patchfile}" 2>/dev/null
} #patch_rc_jail



More information about the svn-src-head mailing list