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> 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 4ffec9a2..4d4b0280 100644 --- a/common/rc +++ b/common/rc @@ -4613,6 +4613,15 @@ _has_mknod() esac } +_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 d31ba3fb..6efc8dc8 100644 --- a/doc/requirement-checking.txt +++ b/doc/requirement-checking.txt @@ -18,6 +18,7 @@ they have. This is done with _require_<xxx> macros, which may take parameters. _require_exportfs _require_mknod _has_mknod + _require_sgid_inheritance (3) System call requirements. @@ -106,6 +107,12 @@ _has_mknod _require_mknod will cause the test to be skipped; _has_mknod returns 0 if mknod is supported and 1 otherwise. +_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 540f0feb..8ed08542 100755 --- a/tests/generic/314 +++ b/tests/generic/314 @@ -30,6 +30,7 @@ _supported_fs generic _require_test _require_user _require_chown +_require_sgid_inheritance rm -rf $TEST_DIR/$seq-dir