1. ホーム
  2. bash

[解決済み] bashスクリプトでrootとして実行されているかどうかを確認する方法

2022-03-15 08:01:04

質問

ルートレベルのパーミッションを必要とするスクリプトを書いているのですが、スクリプトがルートとして実行されない場合、単に "Please run as root." とエコーして終了するようにしたいのですが、どうすればよいでしょうか。

以下は、私が求めていることの疑似コードです。

if (whoami != root)
  then echo "Please run as root"

  else (do stuff)
fi

exit

どのようにすれば、最もよく(きれいに、安全に)これを達成できるでしょうか?ありがとうございます。

ああ、はっきりさせておきたいのですが、(何かをする)部分は、それ自体がrootを必要とするコマンドの実行を含んでいます。そのため、通常のユーザーで実行すると、エラーが発生します。これは、rootコマンドを必要とするスクリプトをスクリプト内でsudoを使わずにきれいに実行するためのもので、構文上の工夫を探しているところです。

どのように解決するのですか?

いくつかの回答がありましたが、どうやら一番良い方法は、isを使うことだそうです。

  • id -u
  • rootで実行した場合、idは0を返します。

これは他の方法よりも信頼性が高いようで、スクリプトを実行する際に sudo .