Por que o sudo exige uma senha pela segunda vez em um script bash todas as vezes?

Por que o sudo exige uma senha pela segunda vez em um script bash todas as vezes?

Eu tenho um aplicativo da web simples e muito pequeno e queria tornar minha vida um pouco mais fácil com um script de implantação muito simplista, que faz o seguinte:

  1. Extrair atualizações do git
  2. Execute o compositor
  3. Alterar proprietário de todos os arquivos

O script basicamente funciona bem e se parece com isto:

#!/bin/bash
echo "Updating repository ...";
sudo git pull;

echo "Installing composer dependencies from lockfile ...";
composer install;

echo "Changing owner to www-data:www-data ...";
sudo chown -R www-data:www-data .;

echo "Deployment DONE!";

No entanto, como você pode ver, tenho dois comandos executados como sudo neste script. Ou seja, o git pulle o chown.

Meu problema é o seguinte: estou ciente de que há um tempo limite para a frequência com que o sistema solicita minha senha ao executar comandos com o sudo. O problema é que, mesmo estando dentro do tempo limite, o scriptsemprepede a senha nosegundoComando sudo (chown).

Alguém poderia me esclarecer, por que esse pode ser o caso?

Responder1

Eu realmente não sei qual é o motivo, mas há solução:

if [[ $(id -u $(whoami)) != 0 ]]
then
    sudo bash $( cd $(dirname $0) ; pwd -P )
    # taken from http://stackoverflow.com/a/4774063/2797066
else
    #rest of script
fi

Responder2

Por que você não executa um script sudoassim:

sudo bash /path/to/script.sh

Onde script.shtem o seguinte conteúdo sem sudo:

#!/bin/bash
echo "Updating repository ...";
git pull;

echo "Installing composer dependencies from lockfile ...";
composer install;

echo "Changing owner to www-data:www-data ...";
chown -R www-data:www-data .;

echo "Deployment DONE!"

Dessa forma, o script solicitará a senha apenas uma vez.

informação relacionada