By default all script should be run as root. If NEED_ROOT=0 is set before loading /etc/rc.d/functions in a rc.d scripts, this will not apply. This allow script with only some part which require root level to call need_root() function at beginning of those parts. Close FS#24095 Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- functions | 10 ++++++++++ rc.d | 1 + 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/functions b/functions index adf4ea9..2ee56b4 100644 --- a/functions +++ b/functions @@ -394,5 +394,15 @@ for f in /etc/rc.d/functions.d/*; do [[ -e $f ]] && . "$f" done +# Exit current shell if user is not root +need_root() { + (( $EUID != 0 )) && printf 'You need to be root.\n' && exit 1 +} + +# Quit script if it's not running by root +# This can be disabled in scripts sourcing functions by setting NEED_ROOT=0 +# A local call to need_root can be done to ensure part of script need root privilege +(( ${NEED_ROOT:-1} == 1 )) && need_root + # End of file # vim: set ts=2 sw=2 noet: diff --git a/rc.d b/rc.d index f5dd652..6d9a9f7 100755 --- a/rc.d +++ b/rc.d @@ -1,5 +1,6 @@ #!/bin/bash +NEED_ROOT=0 # this script can be run without be root . /etc/rc.conf . /etc/rc.d/functions -- Sebastien "Seblu" Luttringer