Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 181:d30a68e66d60
More dataset creation options: -t (tiny) and -T (extra tiny)
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Tue, 16 Aug 2022 12:37:02 +0200 |
| parents | 332276cc0bc8 |
| children | dbd62c32b3fd |
| files | sbin/fjail |
| diffstat | 1 files changed, 52 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/sbin/fjail Tue Aug 16 12:06:13 2022 +0200 +++ b/sbin/fjail Tue Aug 16 12:37:02 2022 +0200 @@ -35,6 +35,8 @@ PARENT must exist already and CHILD must not exist. -s Also create a dataset for freebsd-update data files + -t Create a more tiny set of datasets + -T Create only an extra tiny set of datasets -u Do not automatically mount newly created datasets privs MOUNTPOINT @@ -123,13 +125,21 @@ local _pmp _get _dummy # full name of the dataset local _ds - # dynamic ZFS options -- create cache for freebsd-update - local _zfsopts _fbsdupdate + # dynamic ZFS options -- create cache for freebsd-update -- use a more tiny layout + local _zfsopts _fbsdupdate _tiny _zfsopts="" _fbsdupdate="" - while getopts "us" _opt ; do + _tiny="no" + while getopts "ustT" _opt ; do case ${_opt} in + t) + # use a more tiny layout + _tiny="yes" + ;; + T) # extra tiny layout + _tiny="extra" + ;; u) # do not mount newly created datasets _zfsopts="${_zfsopts} -u" @@ -179,18 +189,48 @@ echo "ERROR: dataset \`${_ds}' does already exist" >&2 return 1 fi + + # + # NOTE: For BEs these directory will be *excluded* from the BE + # + # /tmp + # /usr/home + # /usr/ports + # /usr/src + # /var/audit + # /var/crash + # /var/log + # /var/mail + # /var/tmp + # zfs create ${_zfsopts} -o atime=off "${_ds}" zfs create ${_zfsopts} -o sync=disabled -o setuid=off "${_ds}/tmp" - zfs create ${_zfsopts} "${_ds}/usr" - zfs create ${_zfsopts} -o setuid=off "${_ds}/usr/home" - zfs create ${_zfsopts} "${_ds}/usr/local" - zfs create ${_zfsopts} "${_ds}/var" - zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/audit" - zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/cache" - zfs create ${_zfsopts} -o exec=off -o setuid=off -o primarycache=metadata -o compression=off "${_ds}/var/cache/pkg" - zfs create ${_zfsopts} -o exec=off -o setuid=off -o compression=off "${_ds}/var/crash" + if [ "{_tiny}" != "extra" ]; then + if [ "${_tiny}" = "yes" ]; then + zfs create ${_zfsopts} -o canmount=off "${_ds}/usr" + else + zfs create ${_zfsopts} "${_ds}/usr" + fi + zfs create ${_zfsopts} -o setuid=off "${_ds}/usr/home" + zfs create ${_zfsopts} "${_ds}/usr/local" + fi + if [ \( "${_tiny}" = "yes" \) -o \( "{_tiny}" = "extra" \) ]; then + zfs create ${_zfsopts} -o canmount=off "${_ds}/var" + else + zfs create ${_zfsopts} "${_ds}/var" + fi + if [ "${_tiny}" != "extra" ]; then + zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/audit" + zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/cache" + zfs create ${_zfsopts} -o exec=off -o setuid=off -o primarycache=metadata -o compression=off "${_ds}/var/cache/pkg" + zfs create ${_zfsopts} -o exec=off -o setuid=off -o compression=off "${_ds}/var/crash" + fi if [ "$_fbsdupdate" = "yes" ]; then - zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/db" + if [ \( "${_tiny}" = "yes" \) -o \( "{_tiny}" = "extra" \) ]; then + zfs create ${_zfsopts} -o canmount=off -o exec=off -o setuid=off "${_ds}/var/db" + else + zfs create ${_zfsopts} -o exec=off -o setuid=off "${_ds}/var/db" + fi zfs create ${_zfsopts} -o exec=off -o setuid=off -o primarycache=metadata -o compression=off "${_ds}/var/db/freebsd-update" fi zfs create ${_zfsopts} -o readonly=on -o exec=off -o setuid=off "${_ds}/var/empty"
