F. Randall Farmer
F. Randall Farmer

Reputation: 637

How do I determine if a shell script is running with root permissions?

I've got a script I want to require be run with su privileges, but the interesting scripted command that will fail comes very late in the script, so I'd like a clean test up front to determine if the scrip will fail without SU capabilities.

What is a good way to do this for bash, sh, and/or csh?

Upvotes: 13

Views: 10482

Answers (2)

Nick ODell
Nick ODell

Reputation: 25249

bash/sh:

#!/usr/bin/env bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] ; then
        echo "I AM ROOT, HEAR ME ROAR"
fi

csh:

#!/bin/csh
if ( `id -u` == "0" ) then
        echo "I AM ROOT, HEAR ME ROAR"
endif

Upvotes: 16

mhoareau
mhoareau

Reputation: 751

You might add something like that at the beginning of your script:

#!/bin/sh

ROOTUID="0"

if [ "$(id -u)" -ne "$ROOTUID" ] ; then
    echo "This script must be executed with root privileges."
    exit 1
fi

Upvotes: 13

Related Questions