comparison sbin/fjail @ 211:ee9b32ab0e9a

Implement the "-o" option for "datasets" to create var/empty with the default "readonly" setting instead of "readonly=on"
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 21 Aug 2022 17:12:37 +0200
parents 4d7e00b500a1
children 39b736a91d0d
comparison
equal deleted inserted replaced
210:4d7e00b500a1 211:ee9b32ab0e9a
33 Create ZFS datasets to be used within a jail 33 Create ZFS datasets to be used within a jail
34 34
35 PARENT must exist already and CHILD must not exist. 35 PARENT must exist already and CHILD must not exist.
36 36
37 -A Set "canmount=auto" for datasets 37 -A Set "canmount=auto" for datasets
38 -o Do not create var/empty as read-only dataset but with normal settings
38 -s Also create a dataset for freebsd-update data files 39 -s Also create a dataset for freebsd-update data files
39 -t Create a more tiny set of datasets 40 -t Create a more tiny set of datasets
40 -T Create only an extra tiny set of datasets 41 -T Create only an extra tiny set of datasets
41 -u Do not automatically mount newly created datasets 42 -u Do not automatically mount newly created datasets
42 43
141 # and its mount point 142 # and its mount point
142 local _pmp _get 143 local _pmp _get
143 # full name of the dataset 144 # full name of the dataset
144 local _ds 145 local _ds
145 # dynamic ZFS options -- create cache for freebsd-update -- use a more tiny layout 146 # dynamic ZFS options -- create cache for freebsd-update -- use a more tiny layout
146 local _zfsopts _fbsdupdate _tiny _zfsnoauto 147 local _zfsopts _fbsdupdate _tiny _zfsnoauto _varempty_ro
147 148
148 _zfsopts="" 149 _zfsopts=""
149 _fbsdupdate="" 150 _fbsdupdate=""
150 _tiny="no" 151 _tiny="no"
151 _zfsnoauto="" 152 _zfsnoauto=""
152 while getopts "ustAT" _opt ; do 153 _varempty_ro="-o readonly=on"
154 while getopts "oustAT" _opt ; do
153 case ${_opt} in 155 case ${_opt} in
154 A) 156 A)
155 # 157 #
156 # set canmount=noauto where otherwise canmount=on would have been set 158 # set canmount=noauto where otherwise canmount=on would have been set
157 # or inherited 159 # or inherited
158 # 160 #
159 _zfsnoauto="-o canmount=noauto" 161 _zfsnoauto="-o canmount=noauto"
162 ;;
163 o)
164 # Clear out the default setting of creating var/empty as read-only dataset
165 _varempty_ro=""
160 ;; 166 ;;
161 t) 167 t)
162 # use a more tiny layout 168 # use a more tiny layout
163 _tiny="yes" 169 _tiny="yes"
164 ;; 170 ;;
253 else 259 else
254 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off "${_ds}/var/db" 260 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off "${_ds}/var/db"
255 fi 261 fi
256 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o primarycache=metadata -o compression=off "${_ds}/var/db/freebsd-update" 262 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o primarycache=metadata -o compression=off "${_ds}/var/db/freebsd-update"
257 fi 263 fi
258 zfs create ${_zfsopts} ${_zfsnoauto} -o readonly=on -o exec=off -o setuid=off "${_ds}/var/empty" 264 zfs create ${_zfsopts} ${_zfsnoauto} ${_varempty_ro} -o exec=off -o setuid=off "${_ds}/var/empty"
259 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o primarycache=metadata "${_ds}/var/log" 265 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o primarycache=metadata "${_ds}/var/log"
260 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o atime=on "${_ds}/var/mail" 266 zfs create ${_zfsopts} ${_zfsnoauto} -o exec=off -o setuid=off -o atime=on "${_ds}/var/mail"
261 zfs create ${_zfsopts} ${_zfsnoauto} -o sync=disabled -o exec=off -o setuid=off -o compression=off -o primarycache=all "${_ds}/var/run" 267 zfs create ${_zfsopts} ${_zfsnoauto} -o sync=disabled -o exec=off -o setuid=off -o compression=off -o primarycache=all "${_ds}/var/run"
262 zfs create ${_zfsopts} ${_zfsnoauto} -o sync=disabled -o setuid=off "${_ds}/var/tmp" 268 zfs create ${_zfsopts} ${_zfsnoauto} -o sync=disabled -o setuid=off "${_ds}/var/tmp"
263 } 269 }