Suponho que o script deploy_webapp.sh contenha esta sequência de comandos:
id
sudo su tomcat7
id
O que acontece lá?
-
sshinicia o scriptdeploy_webapp.shem um processo de propriedade do usuáriojenkins. -
sudoé iniciado como um novo processo e altera o proprietário do processo pararoot. -
sudocomeçasucomorootem outro processo. -
sutenta iniciar o shell de login do usuáriotomcat7como usuáriotomcat7. -
tomcat7provavelmente não possui um shell interativo configurado (verifiquegrep tomcat7 /etc/passwd). -
susai. (Nesta sessão não há mais nenhum processo pertencente atomcat7.) -
sudosai. (Nesta sessão não há mais nenhum processo pertencente aroot.) - O último
idé executado sob o mesmo usuário do script inteirodeploy_webapp.sh-jenkins. Todo o script está sendo executado sob o mesmo usuário. Nemsudonemsualtera isso.
O que você pode fazer?
- Chame
sucom o shell que você precisa. Por exemplo:su -s /bin/bash - Execute o segundo
idem um processo de propriedade detomcat7. Por exemplo:su tomcat7 -c id
script de exemplo completo:
id
sudo su tomcat7 -s /bin/bash -c id
Resumo
Todos os comandos a serem executados em tomcat7 devem ser executados em um processo iniciado por su (pela opção -c ) e prestar atenção a shells de login de usuários.