2
スクリプトの一部のみをsudoとして実行し、パスワードを1回だけ入力します
外部依存関係をインストールするスクリプト(実際にはスクリプトとmakefileの組み合わせ)を書いています:apt-getコマンド、gitクローン、ビルド、インストール、グループへのユーザーの追加、... これらのスクリプトの操作には、スーパーユーザー権限が必要なものとそうでないものがあります。 これまで、sudoを使用してmakeプロセス全体を実行しましたが、いくつかの欠点があります。 gitクローンrootを所有者として取得するリポジトリ、つまり、sudoまたはchown ユーザーをグループに追加するスクリプトは、whoami戻るためにどのユーザーを追加するかを知りませんroot スーパーユーザーとしてそれを必要とするコマンドのみを実行する最良の方法は何ですか?理想的には、このプロセスではsudoパスワードを入力する必要がありますが、インストールプロセスの最初の1回だけです。それは最後にそれを忘れますが、それまでずっとそれを保ちます(それは数時間かかることがあります)。 私がオンラインで見つけた解決策は次のとおりです。 sudo -vスクリプトの冒頭で、しかし、私が正しく理解すれば、これはタイムアウトします。スクリプトが数時間実行される可能性があります でスクリプトを実行しますがsudo、スーパーユーザーを必要としないコマンドはで実行しますsudo -u $(logname) <command>。これは私が今やっていることですが、それは逆のはずだと感じています。 理想的には、スクリプトで次のことを行います。 スーパーユーザーの資格情報を要求する ログインしたユーザーとして通常のコマンドを実行する 手順1で入力した資格情報でsudoコマンドを実行します sudo -k スーパーユーザーセッションを閉じる