Suponho que o script deploy_webapp.sh
contenha esta sequência de comandos:
id
sudo su tomcat7
id
O que acontece lá?
-
ssh
inicia o scriptdeploy_webapp.sh
em um processo de propriedade do usuáriojenkins
. -
sudo
é iniciado como um novo processo e altera o proprietário do processo pararoot
. -
sudo
começasu
comoroot
em outro processo. -
su
tenta iniciar o shell de login do usuáriotomcat7
como usuáriotomcat7
. -
tomcat7
provavelmente não possui um shell interativo configurado (verifiquegrep tomcat7 /etc/passwd
). -
su
sai. (Nesta sessão não há mais nenhum processo pertencente atomcat7
.) -
sudo
sai. (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. Nemsudo
nemsu
altera isso.
O que você pode fazer?
- Chame
su
com o shell que você precisa. Por exemplo:su -s /bin/bash
- Execute o segundo
id
em 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.