Ich habe ein Skript, das drei Funktionen ausführt : A && B && C.
Die Funktion Bmuss als Superuser ausgeführt werden, während Aund Cnicht.
Ich habe mehrere Lösungen, aber keine davon ist zufriedenstellend:
sudo das gesamte Skript:
sudo 'A && B && C'Das scheint eine schlechte Idee zu sein
AundCals Superuser, wenn es nicht benötigt wirdMachen Sie das Skript interaktiv:
A && sudo B && CMöglicherweise muss ich mein Passwort eingeben, aber ich möchte, dass mein Skript nicht interaktiv ist, da jede Funktion einige Zeit in Anspruch nehmen kann und ich nicht möchte, dass das Skript auf mich wartet. Nun, das ist auch der Grund, warum es überhaupt ein Skript ist, also muss ich nicht zusehen, wie es läuft.
Die blöde Lösung:
sudo : && A && sudo -n B && CZuerst scheint es dumm, zuerst ein No-Op zu machen
sudo, und ich muss auch die Daumen drücken, dass A nicht mehr als dauern wird$sudo_timeout.Hypothetische Lösung (ich wünschte, Sie würden mir sagen, dass es existiert):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'Das würde zu Beginn nach meinem Passwort fragen und diese Anmeldeinformationen dann nur bei Bedarf verwenden.
Was ist deine Meinung zu all dem? Ich wäre sehr überrascht, dass es keine Lösung für dieses Problem gibt, da ich denke, dass es ein ziemlich häufiges Problem ist (was ist mit make all && sudo make install) ?
AundCTeile explizit mit aussu -l some_non_priviliged_user. Keine Timeout-Probleme und keine Privilegien für A und C. Ich denke nicht, dass 4 möglich ist,sudoscheint ein "globaler Zustand" für einen Benutzer zu sein.