extras/hooks: syntactical errors in SELinux hooks, scipt logic improved
Fixes: bz#1701818 Change-Id: Ia5fa1df81bbaec3a84653d136a331c76b457f42c Signed-off-by: Milan Zink <zeten30@gmail.com> (cherry picked from commit 1ad201a9fd6748d7ef49fb073fcfe8c6858d557d)
This commit is contained in:
parent
bf69fa4727
commit
2aa9898720
@ -34,18 +34,21 @@ parse_args () {
|
|||||||
|
|
||||||
set_brick_labels()
|
set_brick_labels()
|
||||||
{
|
{
|
||||||
volname=${1}
|
volname="${1}"
|
||||||
|
|
||||||
# grab the path for each local brick
|
# grab the path for each local brick
|
||||||
brickpath="/var/lib/glusterd/vols/${volname}/bricks/*"
|
brickpath="/var/lib/glusterd/vols/${volname}/bricks/"
|
||||||
brickdirs=$(grep '^path=' "${brickpath}" | cut -d= -f 2 | sort -u)
|
brickdirs=$(
|
||||||
|
find "${brickpath}" -type f -exec grep '^path=' {} \; | \
|
||||||
|
cut -d= -f 2 | \
|
||||||
|
sort -u
|
||||||
|
)
|
||||||
|
|
||||||
for b in ${brickdirs}; do
|
for b in ${brickdirs}; do
|
||||||
# Add a file context for each brick path and associate with the
|
# Add a file context for each brick path and associate with the
|
||||||
# glusterd_brick_t SELinux type.
|
# glusterd_brick_t SELinux type.
|
||||||
pattern="${b}\(/.*\)?"
|
pattern="${b}(/.*)?"
|
||||||
semanage fcontext --add -t glusterd_brick_t -r s0 "${pattern}"
|
semanage fcontext --add -t glusterd_brick_t -r s0 "${pattern}"
|
||||||
|
|
||||||
# Set the labels on the new brick path.
|
# Set the labels on the new brick path.
|
||||||
restorecon -R "${b}"
|
restorecon -R "${b}"
|
||||||
done
|
done
|
||||||
|
@ -15,45 +15,55 @@ OPTSPEC="volname:"
|
|||||||
VOL=
|
VOL=
|
||||||
|
|
||||||
function parse_args () {
|
function parse_args () {
|
||||||
ARGS=$(getopt -o '' -l $OPTSPEC -n $PROGNAME -- "$@")
|
ARGS=$(getopt -o '' -l ${OPTSPEC} -n ${PROGNAME} -- "$@")
|
||||||
eval set -- "$ARGS"
|
eval set -- "${ARGS}"
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
case $1 in
|
case ${1} in
|
||||||
--volname)
|
--volname)
|
||||||
shift
|
|
||||||
VOL=$1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
shift
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
shift
|
||||||
done
|
VOL=${1}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete_brick_fcontext()
|
function delete_brick_fcontext()
|
||||||
{
|
{
|
||||||
volname=$1
|
volname="${1}"
|
||||||
|
|
||||||
# grab the path for each local brick
|
# grab the path for each local brick
|
||||||
brickdirs=$(grep '^path=' /var/lib/glusterd/vols/${volname}/bricks/* | cut -d= -f 2)
|
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}"
|
||||||
|
|
||||||
|
# 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=$(which getenforce && getenforce)
|
||||||
[ "${SELINUX_STATE}" = 'Disabled' ] && exit 0
|
[ "${SELINUX_STATE}" = 'Disabled' ] && exit 0
|
||||||
|
|
||||||
parse_args "$@"
|
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
|
# failure to delete the fcontext is not fatal
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -46,7 +46,9 @@ TEST $CLI volume create $V0 $H0:$B0/${V0}1;
|
|||||||
EXPECT "$V0" volinfo_field $V0 'Volume Name';
|
EXPECT "$V0" volinfo_field $V0 'Volume Name';
|
||||||
EXPECT 'Created' volinfo_field $V0 'Status';
|
EXPECT 'Created' volinfo_field $V0 'Status';
|
||||||
EXPECT 'createPre' cat /tmp/pre.out;
|
EXPECT 'createPre' cat /tmp/pre.out;
|
||||||
EXPECT 'createPost' cat /tmp/post.out;
|
# Spost.sh comes after S10selinux-label-brick.sh under create post hook script
|
||||||
|
# list. So consider the delay in setting SELinux context on bricks
|
||||||
|
EXPECT_WITHIN 5 'createPost' cat /tmp/post.out;
|
||||||
hooks_cleanup 'create'
|
hooks_cleanup 'create'
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user