Bashスクリプトでsudoでない場合のチェック方法


方法1: ユーザーのIDを確認する

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
    echo "このスクリプトはsudo権限で実行してください"
    exit 1
fi
# ここにスクリプトのコードを記述する

この方法では、コマンドid -uを使用して現在のユーザーのIDを取得し、それが0(rootユーザー)でないことを確認します。もしrootユーザーでない場合、エラーメッセージを表示してスクリプトを終了します。

方法2: sudoコマンドを使用してチェックする

#!/bin/bash
if ! sudo -n true 2>/dev/null; then
    echo "このスクリプトはsudo権限で実行してください"
    exit 1
fi
# ここにスクリプトのコードを記述する

この方法では、sudo -n trueを実行し、sudo権限がない場合にエラーメッセージを表示してスクリプトを終了します。2>/dev/nullはエラーメッセージを無視するために使用されます。

方法3: /etc/sudoersファイルを確認する

#!/bin/bash
if ! sudo grep -q "^$(whoami) " /etc/sudoers; then
    echo "このスクリプトはsudo権限で実行してください"
    exit 1
fi
# ここにスクリプトのコードを記述する

この方法では、sudo grep -q "^$(whoami) " /etc/sudoersを実行し、現在のユーザーがsudoersファイルに記載されていることを確認します。もし記載されていない場合、エラーメッセージを表示してスクリプトを終了します。

以上の方法は、Bashスクリプトで実行ユーザーがsudoでないことを確認するためのいくつかの一般的な手法です。適切な方法を選択し、スクリプトの冒頭に追加してください。これにより、スクリプトが必要な権限で実行されることを保証できます。