Variáveis de ambiente do sistema que não aparecem no sudo

4

Eu tenho a seguinte linha em meu arquivo / etc / environment:

BROKER_URL=tcp://xxx.30.8.163:61616

Eu corro isso e obtenho:

$ set|grep BROKER_URL
BROKER_URL=tcp://xxx.30.8.163:61616

Então corro:

$ sudo bash
# set|grep BROKER_URL
# 

Isso deve ser uma variável de ambiente do sistema. Por que isso não aparece no meu shell sudo?

    
por Thom 17.04.2014 / 15:17

1 resposta

5

/etc/environment é um arquivo usado pelo PAM , o que significa que é processado por um login, que sudo bash não faz e (de man sudoers ):

Command environment

Since environment variables can influence program behavior, sudoers provides a means to restrict which variables from the user's environment are inherited by the command to be run. There are two distinct ways sudoers can deal with environment variables.

By default, the env_reset option is enabled. This causes commands to be executed with a new, minimal environment. On AIX (and Linux systems without PAM), the environment is initialized with the contents of the /etc/environment file.

Note que a maioria dos sistemas GNU / Linux usam o PAM. Você poderia tentar contornar isso usando sudo -i , para usar um shell de login. No entanto, isso provavelmente ainda não funcionará, pois "shell de login" refere-se a como o bash invoca a si mesmo, o que não inclui o sourcing /etc/environment , e você não está realmente efetuando login via PAM.

Sua melhor aposta é provavelmente configurar o sudo para fazer o que você quer.

    
por 17.04.2014 / 15:38