GNU/Linux >> Linux の 問題 >  >> Linux

スクリプトをルートとして遡及的に実行する方法は?

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

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回編集

承認された回答:

ルートであるかどうかをテストし、そうでない場合は、sudoで再起動します 、例:

#! /bin/bash

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

Linux
  1. sudoの内部はどのように機能しますか?

  2. Sudoを使用したリダイレクトまたはパイピングを含むコマンドを実行するにはどうすればよいですか?

  3. 「find-exec{};?」を実行する方法

  1. シェルスクリプトを常にルートとして実行する方法は?

  2. スクリプトを実行する方法??

  3. Linux で Python スクリプトをサービスまたはデーモンのように実行する方法

  1. パスワードプロンプトなしでルートとして特定のプログラムを実行する方法は?

  2. ターミナルをルートとして実行する方法は?

  3. sudo に root パスワードを要求させるにはどうすればよいですか?