The AFS filesystem doesn't do any special handling for the SUID, SGID and SVTX bits and doesn't perform any sort of propagation. Further, only a user with cell admin rights can set non-0777 bits. Handle this by adding a "_require_sgid_inheritance" clause and labelling the test with it, thereby skipping for filesystems that don't support it. Signed-off-by: David Howells <dhowells@xxxxxxxxxx> Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> cc: linux-afs@xxxxxxxxxxxxxxxxxxx --- common/rc | 9 +++++++++ doc/requirement-checking.txt | 7 +++++++ tests/generic/314 | 1 + 3 files changed, 17 insertions(+) diff --git a/common/rc b/common/rc index 8b8cb714..00c5fcfe 100644 --- a/common/rc +++ b/common/rc @@ -5097,6 +5097,15 @@ _save_coredump() $COREDUMP_COMPRESSOR -f "$out_file" } +_require_sgid_inheritance() +{ + case $FSTYP in + afs) + _notrun "SGID-based group ID inheritance is not supported on $FSTYP" + ;; + esac +} + init_rc ################################################################################ diff --git a/doc/requirement-checking.txt b/doc/requirement-checking.txt index 45d2756b..a3588ee9 100644 --- a/doc/requirement-checking.txt +++ b/doc/requirement-checking.txt @@ -16,6 +16,7 @@ they have. This is done with _require_<xxx> macros, which may take parameters. _require_chattr <letters> _require_exportfs + _require_sgid_inheritance (3) System call requirements. @@ -97,6 +98,12 @@ _require_exportfs The test also requires the use of the open_by_handle_at() system call and will be skipped if it isn't available in the kernel. +_require_sgid_inheritance + + The test required that the $TEST_DEV filesystem supports the inheritance + of the SGID bit and the GID from a marked directory. The test will be + skipped if not supported. + ======================== SYSTEM CALL REQUIREMENTS diff --git a/tests/generic/314 b/tests/generic/314 index 9449d30f..dd617089 100755 --- a/tests/generic/314 +++ b/tests/generic/314 @@ -17,6 +17,7 @@ _supported_fs generic _require_test _require_user _require_chown +_require_sgid_inheritance rm -rf $TEST_DIR/$seq-dir