Bashで自動化されたインストール後のスクリプト(たとえば、post-install.sh
と呼ばれます)を書きたいのですが。スクリプトは自動的にリポジトリの追加と更新、パッケージのインストールと更新、設定ファイルの編集などを行います。
ここで、たとえばSudo post-install.sh
を使用してこのスクリプトを実行すると、Sudo
パスワードの入力を1回だけ要求するか、呼び出しごとにSudo
パスワードを入力する必要がありますか?スクリプト内のコマンドの場合、Sudo
権限が必要ですか?言い換えれば、bashスクリプト内のコマンドは、いわば実行権限を「継承」するのでしょうか。
そして、実際にdoの場合でも、Sudo
権限がタイムアウトする可能性があります(たとえば、特定のコマンドがSudo
タイムアウト)?または、最初のSudo
パスワードの入力は、スクリプト全体の期間中持続しますか?
bash
およびそのすべての子プロセスは、スーパーユーザー権限で実行されます。そのため、bashスクリプトでコマンドのパスワードを再入力する必要はありません。
Sudo
タイムアウトは、(後で)Sudo
を個別に呼び出す場合にのみ適用されます。既に実行中のbashプロセスやその子孫には影響しません。
これらの答えはおそらく正しいでしょう。ただし、これは、Sudo
権限を必要とするbashスクリプトを作成するために(私が知る限り)一般的に使用される方法ではありません。一般的に、スクリプトの上部では、Sudo
権限で実行されていないと想定し、代わりにSudo -v
を自分で呼び出して(ユーザーにパスワードの入力を求める)、Sudo
'セッション'を「セットアップ」します。一部のコマンドではecho
アクセスが必要であることをユーザーに知らせるために、Sudo
プロンプトの前にいくつかの説明テキストを追加するか、Sudo
の独自のプロンプトを-p
スイッチで上書きできます。
次に、スクリプト内で、それ以上のパスワード要求なしで、それを必要とするコマンド(およびそれを必要とするコマンドのみ)でSudo
を呼び出しても問題ありません。スクリプト内で一緒に実行する特定のコマンドグループ(Sudo
の独自の使用に関係なく)がSudoタイムアウトを超えて拡張すると思われる場合は、一種の 'keepを発行するために、途中でSudo -v
を呼び出すことができます。 -alive 'Sudo
'セッション '。
スクリプトの実行中にSudo
'セッション'の期限が切れた場合、ユーザーが次回スクリプトでSudoコマンドを発行するときに、パスワードの入力を求められるだけです。