3つの関数を実行するスクリプトがありますA && B && C
。
機能はB
一方で、スーパーユーザーとして実行する必要がありますA
し、C
しないでください。
私はいくつかの解決策を持っていますが、どちらも満足していません:
スクリプト全体をsudo:
sudo 'A && B && C'
それは実行に悪いアイデアのように思える
A
し、C
それが必要ない場合は、スーパーユーザーとしてスクリプトをインタラクティブにします。
A && sudo B && C
パスワードを入力する必要があるかもしれませんが、各関数には時間がかかる可能性があるため、スクリプトを非対話形式にして、スクリプトが私を待機しないようにしたいと思います。まあ、それがそもそもスクリプトであるため、実行を監視する必要はありません。
愚かな解決策:
sudo : && A && sudo -n B && C
最初に何
sudo
もしないことを最初に実行するのはばかげているように思われます。また、Aがを超えることはないので、指を交差させなければなりません$sudo_timeout
。仮説的な解決策(存在することを教えてください):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'
それは最初に私のパスワードを要求し、必要なときだけその資格情報を使用します。
このすべてについてあなたの意見は何ですか?私はそれがかなり一般的な問題だと思うので、その問題の解決策がないことに非常に驚きます(どうですかmake all && sudo make install
)
A
とC
部分を実行しsu -l some_non_priviliged_user
ます。タイムアウトの問題はなく、AとCの特権もありません。4は可能ではないと思いますがsudo
、ユーザーにとっては「グローバルな状態」のようです。