Tests if subdirectories created on the filesystem will properly inherit sgid bit when this is set on the parent directory, once the process has the properly permissions to create a subdirectory, this, should inherit parent's sgid bit if this is set and irix_sgid_inherit sysctl is disabled. V2: add missing source of "attr" file for _require_acls V3: use _ls_l to filter out the selinux "." renumber to 314 to make the merge easier V4: fix 314.out to the correct output Thanks to Sandeen who have written this patch Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> --- tests/generic/314 | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/314.out | 4 +++ tests/generic/group | 1 + 3 files changed, 73 insertions(+), 0 deletions(-) create mode 100755 tests/generic/314 create mode 100644 tests/generic/314.out diff --git a/tests/generic/314 b/tests/generic/314 new file mode 100755 index 0000000..2d34ea8 --- /dev/null +++ b/tests/generic/314 @@ -0,0 +1,68 @@ +#! /bin/bash +# FS QA Test No. 314 +# +# Test SGID inheritance on subdirectories +# +#----------------------------------------------------------------------- +# Copyright (c) 2013 Red Hat, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter +. ./common/attr + +# real QA test starts here +_supported_fs generic +_require_acls +_require_user +_need_to_be_root + +rm -rf $TEST_DIR/$seq-dir + +# Make dir owned by qa user, and an unrelated group: +mkdir $TEST_DIR/$seq-dir +chown $qa_user:12345 $TEST_DIR/$seq-dir + +# Make parent dir sgid +chmod 2775 $TEST_DIR/$seq-dir + +# Make subdirs before & after acl set +su $qa_user -c "mkdir $TEST_DIR/$seq-dir/subdir" +su $qa_user -c "setfacl -m u:$qa_user:rwx,d:u:$qa_user:rwx $TEST_DIR/$seq-dir" +su $qa_user -c "mkdir $TEST_DIR/$seq-dir/subdir2" + +# Both subdirs should have inherited sgid +_ls_l $TEST_DIR/$seq-dir/ | _filter_test_dir | awk '{print $1,$NF}' + +status=0 +exit diff --git a/tests/generic/314.out b/tests/generic/314.out new file mode 100644 index 0000000..180be80 --- /dev/null +++ b/tests/generic/314.out @@ -0,0 +1,4 @@ +QA output created by 314 +total 4 +drwxr-sr-x subdir +drwxrwsr-x+ subdir2 diff --git a/tests/generic/group b/tests/generic/group index bd443c1..7c0ea25 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -115,3 +115,4 @@ 310 auto 311 auto metadata log 312 auto quick prealloc enospc +314 auto quick acl -- 1.7.1 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs