揮発性のメモ2

http://d.hatena.ne.jp/iww/

bashで、rootじゃなければエラーにする

シェル変数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