遡ってスクリプトをrootとして実行するにはどうすればよいですか?

遡ってスクリプトをrootとして実行するにはどうすればよいですか?

root権限で実行する必要があるシェルスクリプトを作成しています。

ユーザーがroot権限を持っているかどうかを確認できますが、ユーザーの資格情報はまだキャッシュされていますが、それを介して自分のスクリプトを呼び出さないsudo -nv || echo "no sudo"場合は役に立ちません。sudoしたがって、ユーザーに反応できず、sudoを使用してスクリプトを呼び出すことはできません。

これを必要とするすべてのコマンドの前に配置できるので、sudoユーザーにroot権限があることを確認するだけで十分ですが、私の考えにはより良い解決策が必要です。

ユーザーにroot権限を提供するように要求し、提供されている場合は、ユーザーが最初にroot権限で呼び出したように、残りのスクリプトを実行するスクリプトに入れることができるコマンドを探しています。

私が望むもの:

#!/bin/bash

if ! command; then        # what I'm looking for
    echo "This script needs root privileges."
    exit 1
fi

mv /bin/cmd1 /bin/cmd2    # requires root

2回修正

ベストアンサー1

あなたがルートかどうかテスト、そうでない場合はrestartを使用してくださいsudo。たとえば、次のようになります。

#! /bin/bash

if [[ $EUID -ne 0 ]];
then
    exec sudo /bin/bash "$0" "$@"
fi

おすすめ記事