From: Jim Meyering Date: Wed, 16 Jul 2003 08:30:06 +0000 (+0000) Subject: Move setuidgid-related and X-Git-Tag: v5.0.90~250 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0306325d29f753b690d50661e9a0b990746ac9b;p=thirdparty%2Fcoreutils.git Move setuidgid-related and NON_ROOT_USERNAME-checking code to this file. --- diff --git a/tests/priv-check b/tests/priv-check index b37f996328..8770817904 100644 --- a/tests/priv-check +++ b/tests/priv-check @@ -13,6 +13,7 @@ priv_check_temp=priv-check.$$ touch $priv_check_temp || framework_failure=1 chmod a-w $priv_check_temp || framework_failure=1 +# FIXME: use id -u, as below -- avoiding use of a temporary file (echo foo >> $priv_check_temp) >/dev/null 2>&1 overwrite_status=$? give_msg=no @@ -35,4 +36,26 @@ EOF (exit 77); exit } +test "$PRIV_CHECK_ARG" = require-root && +{ + # When running as root, always ensure that we have a valid non-root username. + : ${NON_ROOT_USERNAME=nobody} + + # Ensure that the supplied username is valid and with UID != 0. + coreutils_non_root_uid=`setuidgid $NON_ROOT_USERNAME id -u` + test $? = 0 || \ + { + echo "$0: This command failed: \`setuidgid $NON_ROOT_USERNAME id -u'" 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 + } +} + rm -f $priv_check_temp