Files
apfstests/tests/generic/093
T
Frank van der Linden 9860712610 fstests: explicitly specify xattr namespace
Explicitly specify the xattr namespace required for tests.
This allows tests to be skipped correctly for filesystems
that don't support all xattr namespaces.

This changes all tests that require anything other than
the "user" xattr namespace. When called without arguments
as before, _require_attrs() still defaults to the "user"
namespace, so those tests do not need to be changed.

Signed-off-by: Frank van der Linden <fllinden@amazon.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2020-09-14 00:45:14 +08:00

82 lines
1.7 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved.
# Copyright (c) 2017 Google, Inc. All Rights Reserved.
#
# FS QA Test No. 093
#
# Test clearing of capabilities on write.
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
here=`pwd`
tmp=/tmp/$$
status=1 # FAILure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/attr
_cleanup()
{
[ -n "$TEST_DIR" ] && rm -f $file
}
filefilter()
{
sed -e "s#$file#file#"
}
# real QA test starts here
_supported_fs generic
_supported_os Linux
_require_test
_require_attrs security
_require_user
_require_test_program "writemod"
_require_command "$SETCAP_PROG" "setcap"
_require_command "$GETCAP_PROG" "getcap"
rm -f $seqres.full
echo "QA output created by $seq"
echo ""
file=$TEST_DIR/$seq.file
rm -f $file
touch $file
echo "**** Verifying that appending to file clears capabilities ****"
$SETCAP_PROG cap_chown+ep $file
$GETCAP_PROG $file | filefilter
echo data1 >> $file
cat $file
$GETCAP_PROG $file | filefilter
echo
echo "**** Verifying that appending to file doesn't clear other xattrs ****"
$SETCAP_PROG cap_chown+ep $file
$SETFATTR_PROG -n trusted.name -v value $file
echo data2 >> $file
cat $file
_getfattr -m '^trusted\.*' --absolute-names $file | filefilter
echo "**** Verifying that chmod doesn't affect open file descriptors ****"
rm -f $file
touch $file
chown $qa_user $file
chmod ugo+w $TEST_DIR
# don't use $here/src/writemod, as we're running it as a regular user, and
# $here may contain path component that a regular user doesn't have search
# permission
su $qa_user -c "src/writemod $file" | filefilter
cat $file
# success, all done
status=0
exit