ルート レベルの権限を必要とするスクリプトを作成していますが、スクリプトがルートとして実行されていない場合は、単に「ルートとして実行してください。」と表示して終了するようにしたいと考えています。
私が探している擬似コードは次のとおりです。
if (whoami != root)
then echo "Please run as root"
else (do stuff)
fi
exit
これを最も効果的に(クリーンかつ安全に)実現するにはどうすればよいでしょうか? ありがとうございます!
ああ、念のため明確にしておきますが、(do stuff) の部分には、それ自体がルートを必要とするコマンドの実行が含まれます。したがって、通常のユーザーとして実行すると、エラーが発生します。これは、スクリプト内で sudo を使用せずに、ルート コマンドを必要とするスクリプトをクリーンに実行することを目的としているだけなので、構文上の糖衣を探しているだけです。
ベストアンサー1
$EUID 環境変数には、現在のユーザーの UID が保持されます。ルートの UID は 0 です。スクリプトでは次のように記述します。
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
注:が表示された場合は、上部に2: [: Illegal number:
があるかどうかを確認し、 に変更します。#!/bin/sh
#!/bin/bash