diff options
Diffstat (limited to 'extras')
| -rwxr-xr-x | extras/hook-scripts/create/post/S10selinux-label-brick.sh | 13 | ||||
| -rwxr-xr-x | extras/hook-scripts/delete/pre/S10selinux-del-fcontext.sh | 60 | 
2 files changed, 43 insertions, 30 deletions
diff --git a/extras/hook-scripts/create/post/S10selinux-label-brick.sh b/extras/hook-scripts/create/post/S10selinux-label-brick.sh index de242d20af4..f9b4b1a57e3 100755 --- a/extras/hook-scripts/create/post/S10selinux-label-brick.sh +++ b/extras/hook-scripts/create/post/S10selinux-label-brick.sh @@ -34,18 +34,21 @@ parse_args () {  set_brick_labels()  { -  volname=${1} +  volname="${1}"    # grab the path for each local brick -  brickpath="/var/lib/glusterd/vols/${volname}/bricks/*" -  brickdirs=$(grep '^path=' "${brickpath}" | cut -d= -f 2 | sort -u) +  brickpath="/var/lib/glusterd/vols/${volname}/bricks/" +  brickdirs=$( +    find "${brickpath}" -type f -exec grep '^path=' {} \; | \ +    cut -d= -f 2 | \ +    sort -u +  )    for b in ${brickdirs}; do      # Add a file context for each brick path and associate with the      # glusterd_brick_t SELinux type. -    pattern="${b}\(/.*\)?" +    pattern="${b}(/.*)?"      semanage fcontext --add -t glusterd_brick_t -r s0 "${pattern}" -      # Set the labels on the new brick path.      restorecon -R "${b}"    done diff --git a/extras/hook-scripts/delete/pre/S10selinux-del-fcontext.sh b/extras/hook-scripts/delete/pre/S10selinux-del-fcontext.sh index 6eba66fbe07..e7f4e8f5d49 100755 --- a/extras/hook-scripts/delete/pre/S10selinux-del-fcontext.sh +++ b/extras/hook-scripts/delete/pre/S10selinux-del-fcontext.sh @@ -15,45 +15,55 @@ OPTSPEC="volname:"  VOL=  function parse_args () { -        ARGS=$(getopt -o '' -l $OPTSPEC -n $PROGNAME -- "$@") -        eval set -- "$ARGS" - -        while true; do -        case $1 in -        --volname) -         shift -         VOL=$1 -         ;; -        *) -         shift -         break -         ;; -        esac +  ARGS=$(getopt -o '' -l ${OPTSPEC} -n ${PROGNAME} -- "$@") +  eval set -- "${ARGS}" + +  while true; do +    case ${1} in +      --volname) +        shift +        VOL=${1} +      ;; +      *)          shift -        done +        break +      ;; +    esac +    shift +  done  }  function delete_brick_fcontext()  { -        volname=$1 +  volname="${1}" + +  # grab the path for each local brick +  brickpath="/var/lib/glusterd/vols/${volname}/bricks/" +  brickdirs=$( +    find "${brickpath}" -type f -exec grep '^path=' {} \; | \ +    cut -d= -f 2 | \ +    sort -u +  ) + +  for b in ${brickdirs} +  do +    # remove the file context associated with the brick path +    pattern="${b}(/.*)?" +    semanage fcontext --delete "${pattern}" -        # grab the path for each local brick -        brickdirs=$(grep '^path=' /var/lib/glusterd/vols/${volname}/bricks/* | cut -d= -f 2) +    # remove the labels on brick path. +    restorecon -R "${b}" + done -        for b in $brickdirs -        do -                # remove the file context associated with the brick path -                semanage fcontext --delete $b\(/.*\)? -        done  }  SELINUX_STATE=$(which getenforce && getenforce)  [ "${SELINUX_STATE}" = 'Disabled' ] && exit 0  parse_args "$@" -[ -z "$VOL" ] && exit 1 +[ -z "${VOL}" ] && exit 1 -delete_brick_fcontext $VOL +delete_brick_fcontext "${VOL}"  # failure to delete the fcontext is not fatal  exit 0  | 
