Você não quer realmente armazenar a senha de qualquer usuário não criptografada no sistema de arquivos, se puder evitá-la. Depende um pouco de quanto você está confiando na portabilidade do código que você tem no git vs. o que você pode armazenar no sistema de arquivos local. Eu recomendo usar o sudo com o NOPASSWD com um comando tão restrito quanto você puder. Você faria uma entrada do / etc / sudoers algo como:
git ALL=(www) NOPASSWD: /usr/local/sbin/deploySite
Em que deploySite
tem várias verificações para garantir que o usuário esteja indo para o diretório correto e o script deploy.sh
não tem nada de esquemático.
Se você confia no user git para usar a conta do usuário com responsabilidade, você pode usar o NOPASSWD: ALL. Mas você está basicamente permitindo que qualquer pessoa que tenha acesso ao upload tenha acesso para executar qualquer comando que desejar como usuário www.
Mas para responder a pergunta original
Você pode fazer com que o sudo peça a senha do usuário alvo em vez do usuário chamador. Você colocaria uma entrada sudoers como:
Defaults:git targetpw
Então o usuário git terá que digitar a senha do usuário www quando ele executar sudo -u www ...
.