* tests/priv-check: Remove file.
* tests/Makefile.am (EXTRA_DIST): Remove priv-check.
* tests/test-lib.sh (require_root_): New function.
Use this function rather than sourcing the priv-check file.
* tests/sample-test: Use require_root_ rather than priv-check.
* tests/chown/basic: Likewise.
* tests/cp/cp-a-selinux: Likewise.
* tests/cp/preserve-gid: Likewise.
* tests/cp/special-bits: Likewise.
* tests/ls/nameless-uid: Likewise.
* tests/misc/chcon: Likewise.
* tests/mkdir/writable-under-readonly: Likewise.
* tests/mv/sticky-to-xpart: Likewise.
* tests/rm/fail-2eperm: Likewise.
* tests/rm/no-give-up: Likewise.
* tests/rm/one-file-system: Likewise.
* tests/tail-2/append-only: Likewise.
* tests/touch/now-owned-by-other: Likewise.
* tests/rm/fail-eperm: Use skip_if_root_ rather than priv-check.
* Makefile.maint (sc_root_tests): Reflect this change:
search for the new function name.
@if test -d tests \
&& grep check-root tests/Makefile.am>/dev/null 2>&1; then \
t1=sc-root.expected; t2=sc-root.actual; \
- grep -nl '^PRIV_CHECK_ARG=require-root' \
+ grep -nl '^require_root_$$' \
$$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
$(srcdir)/tests/Makefile.am |sort > $$t2; \
fi
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
touch f || framework_failure
fi
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
require_selinux_
cwd=`pwd`
# along with this program. If not, see <http://www.gnu.org/licenses/>.
. "$srcdir/../lang-default"
-PRIV_CHECK_ARG=require-root . "$srcdir/../priv-check"
. "$srcdir/../test-lib.sh"
+require_root_
create() {
echo "$1" > "$1" || exit 1
cp --version
fi
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
touch a b c || framework_failure
chmod u+sx,go= a || framework_failure
. $srcdir/../require-perl
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
nameless_uid=`$PERL -e 'foreach my $i (1000..16*1024) { getpwuid $i or (print "$i\n"), exit }'`
fi
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
require_selinux_
mkdir -p d/sub/s2 || framework_failure
mkdir --version
fi
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
# FIXME: for now, skip it unconditionally
skip_test_ temporarily disabled
. $srcdir/../envvar-check
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
cleanup_() { rm -rf "$other_partition_tmpdir"; }
. "$abs_top_srcdir/tests/other-fs-tmpdir"
+++ /dev/null
-# -*- sh -*-
-# Source this file at the beginning of a test that works
-# only when run as root or as non-root.
-
-# Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
-
-# 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, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will 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, see <http://www.gnu.org/licenses/>.
-
-case "$PRIV_CHECK_ARG" in
- require-root) who='as root';;
- require-non-root) who='by an unprivileged user';;
- *) echo "Usage: PRIV_CHECK_ARG={require-root|require-non-root} . priv-check"\
- 1>&2; exit 1;;
-esac
-
-# Make sure id -u succeeds.
-my_uid=`id -u`
-test $? = 0 || {
- echo "$0: cannot run \`id -u'" 1>&2
- (exit 1); exit 1
-}
-
-# Make sure it gives valid output.
-case $my_uid in
- *[!0-9]*)
- echo "$0: invalid output (\`$my_uid') from \`id -u'" 1>&2
- (exit 1); exit 1
- ;;
- *) ;;
-esac
-
-test $my_uid = 0 && \
-{
- # When running as root, always ensure that we have a valid non-root username.
- # As non-root, don't do anything, since we won't be running setuidgid.
- : ${NON_ROOT_USERNAME=nobody}
-
- # Ensure that the supplied username is valid and with UID != 0.
- coreutils_non_root_uid=`id -u $NON_ROOT_USERNAME`
- test $? = 0 || \
- {
- echo "$0: This command failed: \`id -u $NON_ROOT_USERNAME'" 1>&2
- echo "$0: Skipping this test. To enable it, set the envvar" 1>&2
- echo "$0: NON_ROOT_USERNAME to a non-root user name." 1>&2
- (exit 77); exit 77
- }
- test "$coreutils_non_root_uid" = 0 && \
- {
- echo "$0: The specified NON_ROOT_USERNAME ($NON_ROOT_USERNAME)" 1>&2
- echo "$0: is invalid because its UID is 0." 1>&2
- (exit 1); exit 1
- }
-}
-
-give_msg=no
-case $PRIV_CHECK_ARG:$my_uid in
- require-root:0) ;;
- require-root:*) give_msg=yes ;;
- require-non-root:0)
- # `.' must be writable by $NON_ROOT_USERNAME
- setuidgid $NON_ROOT_USERNAME test -w . ||
- {
- echo "$0: `pwd`: not writable by user \`$NON_ROOT_USERNAME'" 1>&2
- echo "$0: skipping this test" 1>&2
- (exit 77); exit 77
- }
- exec setuidgid $NON_ROOT_USERNAME env PATH="$PATH" $0
- ;;
- require-non-root:*) ;;
-esac
-
-test $give_msg = yes && {
- cat <<EOF
-***************************
-NOTICE:
-$0: This test is being skipped, since it works only
-when run $who.
-***************************
-EOF
- (exit 77); exit 77
-}
fi
. $srcdir/../lang-default
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
# The containing directory must be owned by the user who eventually runs rm.
chown $NON_ROOT_USERNAME .
# searching below. root can simply create the required
# dir/files and run the test as someone else.
-PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+. $srcdir/../test-lib.sh
+skip_if_root_
: ${srcdir=.}
. $srcdir/../require-perl
rm --version
fi
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
mkdir d || framework_failure
touch d/f || framework_failure
rm --version
fi
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../lang-default
. $srcdir/../test-lib.sh
+require_root_
# If used, these must *follow* test-lib.sh.
cleanup_() { rm -rf "$other_partition_tmpdir"; }
# FIXME: . $srcdir/../envvar-check
# FIXME: . $srcdir/../lang-default
-# FIXME: PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
-# FIXME skip_if_root_
+# FIXME: skip_if_root_
+# FIXME: require_root_
# If used, these must *follow* test-lib.sh.
# FIXME: cleanup_() { rm -rf "$other_partition_tmpdir"; }
tail --version
fi
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
chattr_a_works=1
touch f
fi
}
+require_root_() { uid_is_privileged_ || skip_test_ "must be run as root"; }
skip_if_root_() { uid_is_privileged_ && skip_test_ "must be run as non-root"; }
error_() { echo "$0: $@" 1>&2; (exit 1); exit 1; }
framework_failure() { error_ 'failure in testing framework'; }
fi
. $srcdir/../envvar-check
-PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
. $srcdir/../test-lib.sh
+require_root_
group_num=$(id -g $NON_ROOT_USERNAME)