From: Carlos Maiolino Date: Fri, 12 Jul 2013 19:46:13 +0000 (-0300) Subject: xfstests: generic/314, test sgid inheritance on subdirs X-Git-Tag: v2022.05.01~3404 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=dcc683c9ab512639351e36b868aebac6347eb11a;p=users%2Fhch%2Fxfstests-dev.git xfstests: generic/314, test sgid inheritance on subdirs 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 Signed-off-by: Carlos Maiolino Reviewed-by: Ben Myers Signed-off-by: Ben Myers --- diff --git a/tests/generic/314 b/tests/generic/314 new file mode 100644 index 000000000..2d34ea862 --- /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 000000000..180be8097 --- /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 2a399fa82..21cc31506 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -116,3 +116,4 @@ 311 auto metadata log 312 auto quick prealloc enospc 313 auto quick +314 auto quick acl