su no shell script iniciado a partir do ssh funciona em outro terminal

0

Desculpe minha pergunta idiota, mas não sei como descrever minha situação.

Existem logs de Jenkins:

ssh www.myserver.com '/var/lib/tomcat7/webapps/deploy_webapp.sh'
+ id
uid=1004(jenkins) gid=1004(jenkins) groups=1004(jenkins),107(tomcat7)
+ sudo su tomcat7
+ id
uid=1004(jenkins) gid=1004(jenkins) groups=1004(jenkins),107(tomcat7)

Devido a razões de segurança, não consigo acessar o myserver com o usuário tomcat7. "sudo su tomcat7" funciona sem senha porque eu adicionei este comando somente ao / etc / sudoers com NOPASSWD.

Então, a questão é: Por que não consigo su para meu usuário tomcat7 ?

    
por dart 10.11.2013 / 11:39

1 resposta

2

Suponho que o script deploy_webapp.sh contenha esta sequência de comandos:

id
sudo su tomcat7
id

O que acontece lá?

  1. ssh inicia o script deploy_webapp.sh em um processo de propriedade do usuário jenkins .
  2. sudo é iniciado como um novo processo e altera o proprietário do processo para root .
  3. sudo começa su como root em outro processo.
  4. su tenta iniciar o shell de login do usuário tomcat7 como usuário tomcat7 .
  5. tomcat7 provavelmente não possui um shell interativo configurado (verifique grep tomcat7 /etc/passwd ).
  6. su sai. (Nesta sessão não há mais nenhum processo pertencente a tomcat7 .)
  7. sudo sai. (Nesta sessão não há mais nenhum processo pertencente a root .)
  8. O último id é executado sob o mesmo usuário do script inteiro deploy_webapp.sh - jenkins . Todo o script está sendo executado sob o mesmo usuário. Nem sudo nem su altera isso.

O que você pode fazer?

  1. Chame su com o shell que você precisa. Por exemplo: su -s /bin/bash
  2. Execute o segundo id em um processo de propriedade de tomcat7 . 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.

    
por 10.11.2013 / 12:49