bash スクリプトで root として実行されているかどうかを確認する方法 質問する

bash スクリプトで root として実行されているかどうかを確認する方法 質問する

ルート レベルの権限を必要とするスクリプトを作成していますが、スクリプトがルートとして実行されていない場合は、単に「ルートとして実行してください。」と表示して終了するようにしたいと考えています。

私が探している擬似コードは次のとおりです。

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

おすすめ記事