Posted at

ルート権限かどうか調べる

More than 5 years have passed since last update.


王道!UID=0 でチェック

「ルート権限かどうか調べる」を言い換えると、superuser かどうか調べるということ。それを知る律儀な方法は UID (EUID) が 0 かどうかのチェックです。


check-root

if [ ${EUID:-${UID}} = 0 ]; then

echo 'I am root.'
fi

POSIX sh 互換で一番無難な書き方でしょう。


他にも


  • whoami で調べる

思いつきやすい例です。しかし、superuser (UID=0) のユーザ名が必ずしも "root" とは限らないので、万全ではありません。


check-root

if [ `whoami` = 'root' ]; then

echo 'I am root.'
fi


  • id で調べる

管理者の方でないと使わないようなコマンドの id ですが、これも上記の理由と同じで、"root" とは限りません(まあほとんどが "root" でしょうが)。


check-root

if [ $UID = `id -u root` ]; then

echo 'I am root.'
fi