Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZTS: Fix incorrect use of libtest in user_run by xattr_003_neg #11185

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tests/zfs-tests/include/commands.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export SYSTEM_FILES_COMMON='arp
du
echo
egrep
env
expr
false
file
Expand Down Expand Up @@ -117,7 +118,6 @@ export SYSTEM_FILES_FREEBSD='chflags
compress
diskinfo
dumpon
env
fsck
getextattr
gpart
Expand Down
19 changes: 12 additions & 7 deletions tests/zfs-tests/include/libtest.shlib
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
# PATH may have been modified by sudo's secure_path behavior.
#
if [ -n "$STF_PATH" ]; then
PATH="$STF_PATH"
export PATH="$STF_PATH"
fi

#
Expand Down Expand Up @@ -2766,10 +2766,6 @@ function add_user #<group_name> <user_name> <basedir>
;;
esac

echo "export PATH=\"$STF_PATH\"" >>$basedir/$user/.profile
echo "export PATH=\"$STF_PATH\"" >>$basedir/$user/.bash_profile
echo "export PATH=\"$STF_PATH\"" >>$basedir/$user/.login

return 0
}

Expand Down Expand Up @@ -3393,8 +3389,17 @@ function user_run
typeset user=$1
shift

log_note "user:$user $@"
eval su - \$user -c \"$@\" > $TEST_BASE_DIR/out 2>$TEST_BASE_DIR/err
log_note "user: $user"
log_note "cmd: $*"

typeset out=$TEST_BASE_DIR/out
typeset err=$TEST_BASE_DIR/err

sudo -Eu $user env PATH="$PATH" ksh <<<"$*" >$out 2>$err
typeset res=$?
log_note "out: $(<$out)"
log_note "err: $(<$err)"
return $res
}

#
Expand Down
44 changes: 25 additions & 19 deletions tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh
Original file line number Diff line number Diff line change
Expand Up @@ -43,34 +43,40 @@
# 4. Check that we're unable to write an xattr as a non-root user
#

function cleanup {

log_must rm $TESTDIR/myfile.$$

function cleanup
{
rm -f $testfile $tempfile
}

log_assert "read/write xattr on a file with no permissions fails"
log_onexit cleanup

log_must touch $TESTDIR/myfile.$$
create_xattr $TESTDIR/myfile.$$ passwd /etc/passwd
typeset testfile=$TESTDIR/testfile.$$
typeset tempfile=/tmp/tempfile.$$

log_must touch $testfile
create_xattr $testfile passwd /etc/passwd

log_must chmod 000 $TESTDIR/myfile.$$
log_must chmod 000 $testfile
if is_illumos; then
log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cat passwd"
log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cp /etc/passwd ."
log_mustnot su $ZFS_USER -c "runat $testfile cat passwd"
log_mustnot su $ZFS_USER -c "runat $testfile cp /etc/passwd ."
else
user_run $ZFS_USER eval \
"get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$"
log_mustnot diff /etc/passwd /tmp/passwd.$$
log_must rm /tmp/passwd.$$
log_mustnot user_run $ZFS_USER "
. $STF_SUITE/include/libtest.shlib
get_xattr passwd $testfile >$tempfile
"
log_mustnot diff -q /etc/passwd $tempfile
log_must rm $tempfile

user_run $ZFS_USER eval \
"set_xattr_stdin passwd $TESTDIR/myfile.$$ </etc/group"
log_must chmod 644 $TESTDIR/myfile.$$
get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$
log_must diff /etc/passwd /tmp/passwd.$$
log_must rm /tmp/passwd.$$
log_mustnot user_run $ZFS_USER "
. $STF_SUITE/include/libtest.shlib
set_xattr_stdin passwd $testfile </etc/group
"
log_must chmod 644 $testfile
get_xattr passwd $testfile >$tempfile
log_must diff -q /etc/passwd $tempfile
log_must rm $tempfile
fi

log_pass "read/write xattr on a file with no permissions fails"