Доступ к python os.environ var в virtualenv с помощью sudo?

Я работаю над проектом django, где я должен хранить секретную информацию в othon-среде python.

, перейдя по ссылке ниже http://barkas.com/2016/set-environment-variables-activating-virtualenv/ код работает нормально в локальной системе.

Теперь, когда я запускаю получение секретного ключа

$/home/env/bin/python
>> import os
>> os.environ
environ({'SECRETE_KEY': '000000')

, но при выполнении той же команды с sudo получаем разные переменные окружения.

Мне нужно получить environment ({'SECRETE_KEY': '000000') с использованием sudo / home / env / bin / python

Также пробовал с
Как использовать Python virtualenv с sudo?

, но это не помогло мне.

0
задан 18 July 2019 в 15:17

1 ответ

Переменные Bash ограничены по объему. Это означает, что они только доступны определенным вещам и не совместно использованные в масштабе всей системы.

При инстанцировании переменной это доступно для текущей оболочки (x="apple"). Когда Вы экспортируете, та переменная доступна в текущей оболочке и последующих оболочках/функциях (export x="apple"). При закрытии той оболочки/терминала Вы теряете ту переменную.

Поэтому общие переменные добавляются к профилям пользователей так, чтобы они были загружены правильно. Это обычно делается с помощью export в ~/.bashrc или ~/.bash_profile.

Подобный тому, как переменная потеряна при закрытии терминала эти переменные потеряны при переключении пользователей.

Если Вы хотите root чтобы иметь доступ к переменной Bash, необходимо объявить переменную в root оболочка. Можно копировать (принятый) exports в Вашем ~/.bashrc в root пользователь /root/.bashrc файлу, и получили это правильно.

Вы можете экспортировать/продвигать все переменные путем взгляда на man sudo (посмотрите на -E), поскольку я знаю, что это имеет несколько опций на том, переключиться ли на каталог нового пользователя и возможно совместно использовать переменные, но это не подход, который я проявил бы.

Вместо этого подобный тому, как Вы совместно использовали бы каталог веб-сервера (/srv/www/) при наличии общей группы владеют файлом (www-data, g+rwx) и проверка только, что группа может считать файл (o-rwx), мы создадим совместно используемый файл к источнику и защитим от неавторизованных пользователей. Так, можно добавить следующее к каждому пользователю ~/.bashrc файл, который находится в группе и Вы хотите иметь доступ к переменной:

$ touch /srv/www/.bashrc_shared
$ chown www-data:www-data /srv/www/.bashrc_shared
$ chmod g+rwx /srv/www/.bashrc_shared
$ chmod o-rwx /srv/www/.bashrc_shared
$ vim /srv/www/.bashrc_shared

#!/bin/bash

export MY_SECRET_VAR="super_secret_var"

Теперь, удостовериться ~/.profile получает этот файл или Ваш ~/.bashrc который затем получает этот файл, или выполненный sudo с -i флаг:

cat ~/.profile 
# ~/.profile
#

[[ -f /srv/www/.bashrc_shared ]] && source /srv/www/.bashrc_shared

ИЛИ

sudo -i your_command # Source config files
0
ответ дан 23 October 2019 в 23:25

Другие вопросы по тегам:

Похожие вопросы: