Ho uno script che esegue tre funzioni: A && B && C.
La funzione Bdeve essere eseguita come superutente, mentre Ae Cnon lo è.
Ho diverse soluzioni ma nessuna di queste è soddisfacente:
sudo l'intero script:
sudo 'A && B && C'Sembra una cattiva idea da eseguire
AeCcome superutente se non è necessariarendere interattivo lo script:
A && sudo B && CPotrei dover digitare la mia password, ma voglio che il mio script non sia interattivo, poiché ogni funzione può richiedere del tempo e non voglio che lo script mi aspetti. Bene, questo è anche il motivo per cui è una sceneggiatura, quindi non devo guardarla correre.
La stupida soluzione:
sudo : && A && sudo -n B && CPrima sembra stupido fare prima una no-op
sudo, e anche io devo incrociare il dito che A non ne prenderà più di$sudo_timeout.Soluzione ipotetica (vorrei che tu mi dica che esiste):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'Ciò richiederebbe la mia password all'inizio, e quindi userebbe tali credenziali solo quando necessario.
Qual è la tua opinione su tutto questo? Sarei molto sorpreso che non ci sia soluzione a quel problema, poiché penso che sia un problema abbastanza comune (che dire make all && sudo make install)
AeCparti utilizzando in modo esplicitosu -l some_non_priviliged_user. Nessun problema di timeout e nessun privilegio per A e C. Non credo che 4 sia possibile,sudosembra uno "stato globale" per un utente.