Ho uno script che esegue tre funzioni: A && B && C
.
La funzione B
deve essere eseguita come superutente, mentre A
e C
non lo è.
Ho diverse soluzioni ma nessuna di queste è soddisfacente:
sudo l'intero script:
sudo 'A && B && C'
Sembra una cattiva idea da eseguire
A
eC
come superutente se non è necessariarendere interattivo lo script:
A && sudo B && C
Potrei 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 && C
Prima 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
)
A
eC
parti 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,sudo
sembra uno "stato globale" per un utente.