Variável ambiental para subprocesso

0

Estou tentando acessar uma variável de ambiente de um processo python. Eu exportei como export var=value . Isso funciona bem para o comando pyton program.py , mas não para sudo python program.py . Como posso ter certeza de que o processo pode acessar a variável de ambiente se ela for iniciada com o sudo?

    
por Andras Csehi 28.12.2014 / 18:22

1 resposta

3

A política de segurança padrão para sudo normalmente impede que ela herde variáveis de ambiente. No entanto, a menos que a variável específica seja explicitamente negada em seu arquivo sudoers , você deverá permitir especificando a opção -E para sudo, por exemplo,

$ VAR="value" python -c 'import os; print os.environ.get("VAR")'
value
$ 
$ VAR="value" sudo python -c 'import os; print os.environ.get("VAR")'
None
$ 
$ VAR="value" sudo -E python -c 'import os; print os.environ.get("VAR")'
value
$ 

Veja man sudo

   -E          The -E (preserve environment) option indicates to the
               security policy that the user wishes to preserve their
               existing environment variables.  The security policy may
               return an error if the -E option is specified and the user
               does not have permission to preserve the environment.
    
por steeldriver 28.12.2014 / 18:32