シェル変数UIDを使う
シェル変数UIDには実ユーザIDが入っている
0ならroot
#!/bin/bash if [ "$UID" != "0" ]; then echo "root以外では実行できません" exit 1 fi
シェル変数EUIDを使う
シェル変数EUIDには実効ユーザIDが入っている
0ならroot
本来ならこちらを使うのが正しいと思われる。
setuidされたプログラムが実行されるときは UIDが一般ユーザで EUIDがroot 、みたいなことになる。
ただ、スクリプト上で食い違いを引き起こす方法が思いつかない
idコマンドを使う
UIDはbashのように賢いシェルでしか使えないので、アホで無能なdashなどを使っているときは
idコマンドでユーザIDを取得する
if [ "$(id -u)" != "0" ]; then echo "root以外では実行できません" exit 1 fi