J'ai un script qui exécute trois fonctions: A && B && C
.
La fonction B
doit être exécutée en tant que super-utilisateur, tandis que A
et C
non.
J'ai plusieurs solutions mais aucune n'est satisfaisante:
sudo le script entier:
sudo 'A && B && C'
Cela semble être une mauvaise idée à exécuter
A
et enC
tant que super-utilisateur si ce n'est pas nécessairerendre le script interactif:
A && sudo B && C
Je devrai peut-être taper mon mot de passe, mais je veux que mon script ne soit pas interactif, car chaque fonction peut prendre un certain temps, et je ne veux pas que le script m'attende. Eh bien, c'est aussi pourquoi c'est un script en premier lieu, donc je n'ai pas à le regarder fonctionner.
La solution stupide:
sudo : && A && sudo -n B && C
D'abord, il semble stupide de
sudo
commencer par un no-op en premier, et je dois aussi croiser le doigt que A ne va pas en prendre plus$sudo_timeout
.Solution hypothétique (j'aimerais que vous me disiez qu'elle existe):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'
Cela demanderait mon mot de passe au début, puis n'utiliserait ces informations d'identification qu'en cas de besoin.
Quelle est votre opinion sur tout cela? Je serais très surpris qu'il n'y ait pas de solution à ce problème, car je pense que c'est un problème assez courant (qu'en est-il make all && sudo make install
)
A
et . Pas de problèmes de timeout, et pas de privilèges pour A et C. Je ne pense pas que 4 soit possible, semble un "état global" pour un utilisateur.C
su -l some_non_priviliged_user
sudo