From 99582e3bf63475b7af5793bb9230e88d847dc7c8 Mon Sep 17 00:00:00 2001 From: Petr Lautrbach Date: Tue, 2 Jul 2019 17:11:32 +0200 Subject: [PATCH 22/23] policycoreutils/fixfiles: Fix [-B] [-F] onboot Commit 6e289bb7bf3d ("policycoreutils: fixfiles: remove bad modes of "relabel" command") added "$RESTORE_MODE" != DEFAULT test when onboot is used. It makes `fixfiles -B onboot` to show usage instead of updating /.autorelabel The code is restructured to handle -B for different modes correctly. Fixes: # fixfiles -B onboot Usage: /usr/sbin/fixfiles [-v] [-F] [-f] relabel ... Signed-off-by: Petr Lautrbach --- policycoreutils/scripts/fixfiles | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles index 53d28c7b..9dd44213 100755 --- a/policycoreutils/scripts/fixfiles +++ b/policycoreutils/scripts/fixfiles @@ -112,7 +112,7 @@ VERBOSE="-p" FORCEFLAG="" RPMFILES="" PREFC="" -RESTORE_MODE="DEFAULT" +RESTORE_MODE="" SETFILES=/sbin/setfiles RESTORECON=/sbin/restorecon FILESYSTEMSRW=`get_rw_labeled_mounts` @@ -214,16 +214,17 @@ restore () { OPTION=$1 shift -case "$RESTORE_MODE" in - PREFC) - diff_filecontext $* - return - ;; - BOOTTIME) +# [-B | -N time ] +if [ -z "$BOOTTIME" ]; then newer $BOOTTIME $* return - ;; -esac +fi + +# -C PREVIOUS_FILECONTEXT +if [ "$RESTORE_MODE" == PREFC ]; then + diff_filecontext $* + return +fi [ -x /usr/sbin/genhomedircon ] && /usr/sbin/genhomedircon @@ -239,7 +240,7 @@ case "$RESTORE_MODE" in FILEPATH) ${RESTORECON} ${VERBOSE} ${EXCLUDEDIRS} ${FORCEFLAG} $* -R -- "$FILEPATH" ;; - DEFAULT) + *) if [ -n "${FILESYSTEMSRW}" ]; then LogReadOnly echo "${OPTION}ing `echo ${FILESYSTEMSRW}`" @@ -272,7 +273,7 @@ fullrelabel() { relabel() { - if [ "$RESTORE_MODE" != DEFAULT ]; then + if [ -n "$RESTORE_MODE" -a "$RESTORE_MODE" != DEFAULT ]; then usage exit 1 fi @@ -306,7 +307,7 @@ case "$1" in verify) restore Verify -n;; relabel) relabel;; onboot) - if [ "$RESTORE_MODE" != DEFAULT ]; then + if [ -n "$RESTORE_MODE" -a "$RESTORE_MODE" != DEFAULT ]; then usage exit 1 fi @@ -344,7 +345,7 @@ if [ $# -eq 0 ]; then fi set_restore_mode() { - if [ "$RESTORE_MODE" != DEFAULT ]; then + if [ -n "$RESTORE_MODE" ]; then # can't specify two different modes usage exit 1 @@ -357,7 +358,7 @@ while getopts "N:BC:FfR:l:v" i; do case "$i" in B) BOOTTIME=`/bin/who -b | awk '{print $3}'` - set_restore_mode BOOTTIME + set_restore_mode DEFAULT ;; N) BOOTTIME=$OPTARG -- 2.22.0