Eu tenho um script que executa três funções: A && B && C
.
A função B
precisa ser executada como superusuário, enquanto A
e C
não.
Eu tenho várias soluções, mas nenhuma delas é satisfatória:
sudo o script inteiro:
sudo 'A && B && C'
Parece uma má ideia executar
A
eC
como superusuário, se não for necessáriotorne o script interativo:
A && sudo B && C
Talvez eu precise digitar minha senha, mas quero que meu script não seja interativo, pois cada função pode levar algum tempo e não quero que o script espere por mim. Bem, é também por isso que é um script, para que eu não precise assistir.
A solução estúpida:
sudo : && A && sudo -n B && C
Primeiro, parece estúpido fazer um não-op
sudo
primeiro, e também devo cruzar o dedo que A não vai demorar mais do que$sudo_timeout
.Solução hipotética (gostaria que você me dissesse que existe):
sudo --store-cred 'A && sudo --use-cred-from-parent-sudo B && C'
Isso solicitaria minha senha no início e, em seguida, usaria essas credenciais somente quando necessário.
Qual a sua opinião sobre tudo isso? Eu ficaria muito surpreso por não haver solução para esse problema, pois acho que é um problema bastante comum (e quanto a make all && sudo make install
)
A
eC
partes explicitamente usandosu -l some_non_priviliged_user
. Sem problemas de tempo limite e sem privilégios para A e C. Não acho que 4 seja possível,sudo
parece um "estado global" para um usuário.