From 1cabb74b7d629262319c9e348962088a0697fe33 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Thu, 10 Jan 2013 22:38:48 +0100 Subject: scripts: check for running as root Running as root is really, really dangerous. Add a runtime-check that refuses to build if running as root. Can be overriden with a double switch in the menuconfig. Signed-off-by: "Yann E. MORIN" diff --git a/config/global/ct-behave.in b/config/global/ct-behave.in index 6256a34..ba723cf 100644 --- a/config/global/ct-behave.in +++ b/config/global/ct-behave.in @@ -29,6 +29,37 @@ config EXPERIMENTAL - non-existant, in which case you could also try hacking it in and send me the result +config ALLOW_BUILD_AS_ROOT + bool + prompt "Allow building as root user (READ HELP!)" + depends on EXPERIMENTAL + help + You normally do *not* need to be root to build a toolchain using + crosstool-NG. In fact, it is *VERY* dangerous to run as root, as + crosstool-NG will, as part of the build process, remove a few + directories. If anything goes wrong, running as root can ruin + your host distribution. + + I can't stress it enough: DO NOT RUN AS ROOT !! + + Do not run as root, you've been warned. + Do not come whining, if it nukes your host system. + Do not come whining, if you lose any data. + Do not run as root. + + Do not run as root, you've been warned. + Do not come whining, if the Earth stops rotating. + Do not come whining, if kittens are smashed. + Do not run as root. + + Do not run as root, do not run as root! + (ad libitum) + +config ALLOW_BUILD_AS_ROOT_SURE + bool + prompt "Are you sure?" + depends on ALLOW_BUILD_AS_ROOT + config DEBUG_CT bool prompt "Debug crosstool-NG" diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in index c15415b..512880e 100644 --- a/scripts/crosstool-NG.sh.in +++ b/scripts/crosstool-NG.sh.in @@ -25,6 +25,14 @@ . .config.2 # Yes! We can do full logging from now on! +# Check running as root +if [ -z "${CT_ALLOW_BUILD_AS_ROOT_SURE}" ]; then + if [ $(id -u) -eq 1000 ]; then + CT_DoLog ERROR "You must NOT be root to run crosstool-NG" + exit 1 + fi +fi + # If we want an interactive debug-shell, we must ensure these FDs # are indeed connected to a terminal (and not redirected in any way). if [ "${CT_DEBUG_INTERACTIVE}" = "y" -a ! \( -t 0 -a -t 6 -a -t 2 \) ]; then -- cgit v0.10.2-6-g49f6