Skip to content

Instantly share code, notes, and snippets.

@aponxi
Last active August 29, 2015 14:05
Show Gist options
  • Save aponxi/e6e0149b2dcaa8bd81a5 to your computer and use it in GitHub Desktop.
Save aponxi/e6e0149b2dcaa8bd81a5 to your computer and use it in GitHub Desktop.
How to: Check the bash shell script is being run by root or not

How to: Check the bash shell script is being run by root or not

by NIX CRAFT on NOVEMBER 12, 2007 · 22 COMMENTS· LAST UPDATED JANUARY 6, 2008 in CENTOS, DEBIAN LINUX, FREEBSD

http://www.cyberciti.biz/tips/shell-root-user-check-script.html

Sometime it is necessary to find out if a shell script is being run as root user or not.

When user account created a user ID is assigned to each user. BASH shell stores the user ID in $UID variable. Your effective user ID is stored in $EUID variable. You can

Old way...

You can easily add a simple check at the start of a script:

Check the script is being run by root user

#!/bin/bash
# Init
FILE="/tmp/out.$$"
GREP="/bin/grep"
#....
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
# ...

New way: Using EUID

#!/bin/bash
# Init
FILE="/tmp/out.$$"
GREP="/bin/grep"
#....
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
# ...

Mount /dev/sdb1 only if you are a root

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
  echo "You must be a root user" 2>&1
  exit 1
else
  mount /dev/sdb1 /mnt/disk2
fi

Updated for accuracy and more examples.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment