Se você quiser apenas solicitar uma senha para elevar os privilégios, adicione
sudo -v
na linha antes disso. O script parará, solicitará a senha e continuará assim que uma senha aceitável for digitada ou sairá se a verificação de senha falhar.
Efetivamente:
#!/bin/bash
# Initiate sudo session
sudo -v
# Execute command; sudo session for tee is already active.
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
Se este for um script de longa duração, considere tornar isso uma função executada no início:
sudo -v
while true;
do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2>/dev/null &
Seu script se parecerá com algo assim:
#!/bin/bash
sudoChk () {
sudo -v
while true;
do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2>/dev/null &
}
sudoChk
#...long running commands...
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
exit 0
Você também pode estar procurando:
sudo sh -c
em vez de
sudo su -c