シェルスクリプト-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