1

私はrootアクセスを必要とするbashスクリプトを書いているので、私がする必要があるのは次のようなものを書くことです

$my_psswd >> sudo some_command parameter1 parameter2

プロセスを自動化します。これがセキュリティホールを開くかどうかは関係ありません。これは多かれ少なかれ私が考えることができる例です。しかし、問題は、sudoを開始すると、ユーザー入力を要求することです。これは、自動化する方法や変数として提供する方法がわかりません。

私は次のようなことを試しました

$my_psswd >1 sudo something
echo $my_psswd | sudo something

しかし、これはどれも私が望むものではありません。また、これはbashスクリプトである必要があり、expectのようなプログラムを使用することはできません。ありがとう。

4

4 に答える 4

6

sudo コマンドには -S スイッチが必要です。

-S The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device. The password must be followed by a newline character

于 2012-05-31T04:50:55.647 に答える
6

これを行うことはまったくお勧めしません。パスワードを平文で保存するため、他の人がアクセスできる可能性があります。または、プロセスのリストに表示され、他のユーザーが再び利用できるようになります。

これを防ぐための代替手段がいくつかあります。

  1. sudo を使用してスクリプト全体を実行します。スクリプト自体で sudo を使用しないでください。昇格された権限ですべてを実行してください。もちろん、欠点は、それを必要としない昇格された特権で何かを実行している可能性があることですが、それ以上のバックグラウンドは言うことができません。
  2. パスワードを指定せずに sudo を介してこれらの特定のコマンドを実行するようにアカウントを構成することをお勧めします。そうすれば、パスワードを提供する問題なしに、昇格された特権で必要なコマンドのみを実行できます。
  3. sudo -l回避策は、スクリプトを呼び出す前に実行することです。そうすれば、sudo のセッションがアクティブになり、パスワードの入力を求められなくなります。これは単なる回避策であり、コマンドの 1 つが sudo に設定された猶予時間よりも実行に時間がかかる場合に失敗します。ただし、小さなスクリプトでは、これは簡単に修正できる場合があります。
于 2012-05-31T06:55:39.977 に答える
3

echo $PW | を試してください。sudo -S コマンド

それはあなたのために働くかもしれません。

于 2012-05-31T04:50:08.783 に答える
3

このように sudo を使用することは想定されていません。visudo を使用して、どのユーザーにどのコマンドを許可するかを指定してください。そうすれば、パスワードについて心配する必要はありません。

于 2012-05-31T05:48:20.990 に答える