thers a similar question out there How can I determine whether a shell-script runs as root or not?

I have the same doubt with different result

Is it possible to, within the BASH script prior to everything being run, check if the script is being run as superuser, and if not, print a message saying You must be superuser to use this script, then subsequently

get pass from the user using askpass or something like that then execute the same script as superuser?


I just call sudo if the program needs root permissions, but doesn't have:

if [ $(id -u) != 0 ]; then
   echo "This script requires root permissions"
   sudo "$0" "$@"

"$0" contains the name of the script, "$@" optional arguments. It may be omitted if your program does not accept arguments.

Note: this shellscript is expected to be run in a shell, if this script should run as GUI, use something like gksu or kdesudo instead of sudo.


this does not work although Lekensteyn is right on point.

you have to set the variable equal to the output of id -u

ID=$(id -u) if [ $ID != 0 ] then sudo "$0" "$@" exit fi

if you use echo to output this script requires root permissions that will show up every time a user other than root(since its id=0) runs the script regardless of whether or not it needs root permissions, so just keep it simple.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.