シェルスクリプト-root権限の確認

UIDによる判定方法

UID (EUID) が 0 かどうかのチェックします。

POSIX sh 互換であり、多くのスクリプトで実行できます。

なお、「#!/usr/bin/env bash」のように実行時の環境変数を読み込めるようにしなければ変数が未定義エラーとなるので注意が必要です。


#!/usr/bin/env bash

if [ ${EUID:-${UID}} != 0 ]; then
    echo "This script must be run as root"
    exit 1
else
    echo "I am root user."
fi

ユーザ名による判定方法

whoami で取得したユーザ名が "root" であるか調べます。

ただし、superuserのユーザ名が必ずしも "root" とは限らないことに注意が必要です。

(特殊な環境を除いて、多くの環境ではrootとなります。実行確認していれば十分に利用できます。)



if [ `whoami` != 'root' ]; then
    echo "This script must be run as root"
fi

なお、bash環境であれば以下の書き方が推奨されています。



if [ $(whoami) != "root" ]; then
    echo "This script must be run as root"
fi

idコマンドによる判定方法

idコマンドでrootユーザのユーザIDを取得し、スクリプト実行者のUID環境変数と比較します。

ただし、superuserの UID が必ずしも 0 とは限らないので、注意が必要です。

(superuserのユーザ名が "root" でない場合には用いることができません。)


#!/usr/bin/env bash

if [ $UID != `id -u root` ]; then
    echo "This script must be run as root"
    exit 1
else
    echo "I am root user."
fi

USER環境変数で判定する。


if [ "${USER}" = "root" ]; then
    echo "I am root user."
else
    echo "This script must be run as root"
    exit 1
fi

関連ページ