Passa a variável de ambiente para outro usuário ao ser executado como sudo

1

Estou instalando o Tomcat em uma máquina RHEL5 e estou tendo problemas para iniciá-lo, porque JAVA_HOME não está configurado. Tomcat está sendo iniciado usando

sudo /sbin/service tomcat start

e é executado sob o usuário tomcat . Quando eu estou logado como eu ou como usuário root, JAVA_HOME está definido corretamente (usando /etc/profile.d/java.sh ). Eu estou supondo que isso não está sendo devidamente passado pelo sudo.

Alguém pode me indicar a direção da mudança que preciso fazer para que essa variável seja passada pelo sudo ou escolhida pelo usuário tomcat ? Eu acredito que existem várias maneiras.

Obrigado antecipadamente

Rich

    
por Rich 27.10.2010 / 17:34

5 respostas

3

Uma maneira de fazer isso é adicionar JAVA_HOME ao script de inicialização do tomcat, que deve estar em /etc/init.d

    
por 27.10.2010 / 18:01
1

A resposta de mazianni está correta.

Mais informações:

Para um shell não interativo /etc/profile não é lido e, portanto, /etc/profile.d/*.sh não são lidos.

JAVA_HOME está definido no seu shell interativo. sudo retira a maioria das variáveis de ambiente. Você pode configurar o env_keep em /etc/sudoers para permitir JAVA_HOME , mas se você configurar o tomcat para iniciar automaticamente esse método, ele não funcionará mais. (Portanto, a solução de mazianni é a melhor.)

    
por 27.10.2010 / 19:15
1

Experimente sudo -E <your command> . Isso preserva (a maioria) o ambiente. Veja man sudo para mais informações.

    
por 28.10.2010 / 01:10
0

Você pode definir temporariamente uma variável antes da execução no BASH. Isso estará disponível para o comando imediatamente após.

JAVA_HOME=/path/to/java sudo /sbin/service tomcat start

    
por 28.10.2010 / 01:32
0

Leia man sudoers .

Usando visudo (nunca edite /etc/sudoers diretamente!), você pode optar por definir !env_reset para permitir globalmente que as variáveis de ambiente (a maioria) passem por sudo , ou adicione a env_keep quais variáveis específicas devem ser mantidas.

    
por 28.10.2010 / 03:43