Я пытаюсь получить доступ к переменной среды от процесса Python. Я экспортировал его как export var=value
. Это хорошо работает для команды pyton program.py
но не для sudo python program.py
. Как я могу удостовериться, что процесс может получить доступ к переменной среды, если это запускается с sudo?
Политика безопасности по умолчанию для sudo
обычно препятствует тому, чтобы он наследовал переменные среды. Однако, если конкретная переменная явно не отклонена в Вашем sudoers
файл, необходимо быть в состоянии позволить его путем определения -E
, опция к sudo, например,
$ 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
$
Видят 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.