From 3c556353cd1dde0593096c9e9e11b877403971f0 Mon Sep 17 00:00:00 2001 From: Susant Palai Date: Fri, 18 Jan 2019 17:26:36 +0530 Subject: locks/fencing: Add a security knob for fencing There is a low level security issue with fencing since one client can preempt another client's lock. This patch does not completely eliminate the issue of a client misbehaving, but certainly it adds a security layer for default use cases that does not need fencing. Change-Id: I55cd15f2ed1ae0f2556e3d27a2ef4bc10fdada1c updates: #466 Signed-off-by: Susant Palai --- tests/basic/fencing/fence-basic.t | 2 ++ tests/basic/fencing/fencing-crash-conistency.t | 1 + tests/basic/fencing/test-fence-option.t | 37 ++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 tests/basic/fencing/test-fence-option.t (limited to 'tests/basic/fencing') diff --git a/tests/basic/fencing/fence-basic.t b/tests/basic/fencing/fence-basic.t index 080507c2ba5..30f379e7b20 100755 --- a/tests/basic/fencing/fence-basic.t +++ b/tests/basic/fencing/fence-basic.t @@ -18,6 +18,8 @@ EXPECT 'Started' volinfo_field $V0 'Status'; TEST $CLI volume set $V0 diagnostics.client-log-flush-timeout 30 TEST $CLI volume set $V0 performance.write-behind off TEST $CLI volume set $V0 locks.mandatory-locking forced +TEST $CLI volume set $V0 enforce-mandatory-lock on + logdir=`gluster --print-logdir` diff --git a/tests/basic/fencing/fencing-crash-conistency.t b/tests/basic/fencing/fencing-crash-conistency.t index cca8ee7343f..0c69411e90c 100644 --- a/tests/basic/fencing/fencing-crash-conistency.t +++ b/tests/basic/fencing/fencing-crash-conistency.t @@ -26,6 +26,7 @@ TEST "truncate -s 0 $M0/file" #enable mandatory locking TEST $CLI volume set $V0 locks.mandatory-locking forced +TEST $CLI volume set $V0 enforce-mandatory-lock on #write should pass TEST "echo "test" >> $M0/file" diff --git a/tests/basic/fencing/test-fence-option.t b/tests/basic/fencing/test-fence-option.t new file mode 100644 index 00000000000..115cbe7dbdf --- /dev/null +++ b/tests/basic/fencing/test-fence-option.t @@ -0,0 +1,37 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +# with lock enforcement flag write should fail with out lock + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 $H0:$B0/${V0}1 +EXPECT 'Created' volinfo_field $V0 'Status'; +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; +TEST glusterfs -s $H0 --volfile-id $V0 $M0 + +TEST touch $M0/file + +#setfattr for mandatory-enforcement will fail +TEST ! setfattr -n trusted.glusterfs.enforce-mandatory-lock -v 1 $M0/file + +#enable mandatory locking +TEST $CLI volume set $V0 locks.mandatory-locking forced + +#setfattr will fail +TEST ! setfattr -n trusted.glusterfs.enforce-mandatory-lock -v 1 $M0/file + +#set lock-enforcement option +TEST $CLI volume set $V0 enforce-mandatory-lock on + +#setfattr should succeed +TEST setfattr -n trusted.glusterfs.enforce-mandatory-lock -v 1 $M0/file + +cleanup; \ No newline at end of file -- cgit