Я работаю над проектом 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?
, но это не помогло мне.
Переменные Bash ограничены по объему. Это означает, что они только доступны определенным вещам и не совместно использованные в масштабе всей системы.
При инстанцировании переменной это доступно для текущей оболочки (x="apple"
). Когда Вы экспортируете, та переменная доступна в текущей оболочке и последующих оболочках/функциях (export x="apple"
). При закрытии той оболочки/терминала Вы теряете ту переменную.
Поэтому общие переменные добавляются к профилям пользователей так, чтобы они были загружены правильно. Это обычно делается с помощью export
в ~/.bashrc
или ~/.bash_profile
.
Подобный тому, как переменная потеряна при закрытии терминала эти переменные потеряны при переключении пользователей.
Если Вы хотите root
чтобы иметь доступ к переменной Bash, необходимо объявить переменную в root
оболочка. Можно копировать (принятый) export
s в Вашем ~/.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