]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Move setuidgid-related and
authorJim Meyering <jim@meyering.net>
Wed, 16 Jul 2003 08:30:06 +0000 (08:30 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 16 Jul 2003 08:30:06 +0000 (08:30 +0000)
NON_ROOT_USERNAME-checking code to this file.

tests/priv-check

index b37f996328d839907c9755f3e01eef4e37b01962..8770817904aec2763923943251bcbc94a098fc72 100644 (file)
@@ -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