Hi,

I have three questions regarding a behaviour of syspatch(8) with mtree(8).

1. I noticed when applying patches it resets some permissions of new, but also 
of
existing directories on the system using mtree(8).

In the shellscript syspatch(8) there is a function:

trap_handler():
        # in case a patch added a new directory (install -D)
        if [[ -n ${_PATCHES} ]]; then
                mtree -qdef /etc/mtree/4.4BSD.dist -p / -U >/dev/null
                [[ -f /var/sysmerge/xetc.tgz ]] &&
                        mtree -qdef /etc/mtree/BSD.x11.dist -p / -U >/dev/null
        fi

Here the comment says: "in case a patch added a new directory (install -D)".
This is true, but it also applies to existing directories and resets
permissions, ownership, etc.

A real-world example: on my system after applying syspatch this changed
permissions of an existing directory and a daemon (mysqld) failed to start,
because it could not access a UNIX domain socket file in the www chroot.

Is this intended? If so should this behaviour perhaps get documented in the man
page? I can write a patch if so.

2. This code-path is called when $_PATCHES is set, thus when patches are
available and are being applied, but on patch rollback (syspatch -r or -R) it
does not run mtree. Wouldn't it be more consistent to also run mtree after
patch rollback?

3. With an other case on another machine with low disk-space the following
occurred: syspatch is run and ran out of disk-space while applying patches: "No
space left on sd0f, aborting", but it still ran mtree and reset the permissions
on "SIGEXIT". Wouldn't it make more sense to not change anything if no patch
could be applied?

Thanks for your time,

-- 
Kind regards,
Hiltjo

Reply via email to