changeset 342:89877869a665

Create all temporary files within a unique temporary directory
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 03 Dec 2022 21:27:50 +0100
parents a204a7415d4a
children dc47c5a49a5c
files docs/man/man8/ftjail-freebsd-update.rst sbin/ftjail
diffstat 2 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/docs/man/man8/ftjail-freebsd-update.rst	Sat Dec 03 21:12:23 2022 +0100
+++ b/docs/man/man8/ftjail-freebsd-update.rst	Sat Dec 03 21:27:50 2022 +0100
@@ -28,7 +28,7 @@
 
 .. option:: -k
 
-   Keep all temporary files. Temporary files are created in :file:`/var/tmp`.
+   Keep all temporary files.
 
    .. note:: On unexpected errors temp files are automatically kept.
 
@@ -47,6 +47,13 @@
 All environment variables that affect :command:`zfs` are effective also.
 
 
+Files
+-----
+
+A unique temporary directory is created within :file:`/var/tmp`. All
+temporary files are created within this directory.
+
+
 See Also
 --------
 
--- a/sbin/ftjail	Sat Dec 03 21:12:23 2022 +0100
+++ b/sbin/ftjail	Sat Dec 03 21:27:50 2022 +0100
@@ -973,6 +973,7 @@
     local _clone_extra_props _canmount_prop
     local _line _opt
     local _root_readonly _root_origin
+    local _u_tmpdir
 
     _opt_keep="no"
     _opt_old_origin=""
@@ -1053,10 +1054,11 @@
     #            start with "ro,"
     #    _root_origin="$(zfs list -H -o origin "${_root_dataset}")"
 
-    _dir_fn_fstab="$(env TMPDIR=/var/tmp mktemp -t ftjail_${_dir_basename}.fstab)"
+    _u_tmpdir="$(env TMPDIR=/var/tmp mktemp -d -t ftjail_${_dir_basename})"
+    [ -z "${_u_tmpdir}" ] && { echo "ERROR: cannot create unique temp dir" 1>&2; return 1; }
+    _dir_fn_fstab="${_u_tmpdir}/fstab"
     echo -n "${_dir_mounts}" >>"${_dir_fn_fstab}"
-
-    _dir_fn_tldir="$(env TMPDIR=/var/tmp mktemp -t ftjail_${_dir_basename}.tldir)"
+    _dir_fn_tldir="${_u_tmpdir}/tldirs"
     find "${_directory}" -depth 1 -type d 2>/dev/null | sort >>"${_dir_fn_tldir}"
 
     # Unmount in reverse order: unmount can do it for us
@@ -1144,8 +1146,7 @@
 
     if [ "${_opt_keep}" != "yes" ]; then
         echo "Cleaning up..."""
-        [ -n "${_dir_fn_tldir}" } && [ -f "${_dir_fn_tldir}" ] && rm -f "${_dir_fn_tldir}"
-        [ -n "${_dir_fn_fstab}" ] && [ -f "${_dir_fn_fstab}" ] && rm -f "${_dir_fn_fstab}"
+        [ -n "${_u_tmpdir}" ] && [ -d "${_u_tmpdir}" ] && rm -rvf "${_u_tmpdir}"
     fi
     echo "Done."
 }