Как скрыть пароли и секретные ключи в переменных окружения? (Линукс)

Я использую манджаро и оболочку bash. Я пытаюсь скрыть пароли и секретные ключи в переменных среды, чтобы использовать их в своем скрипте Python.

Я пробовал это в своем файле .bashrc

export BOT_EMAIL="[email protected]"
export BOT_PASS="pass_"

И если я запускаю этот скрипт из терминала, он запускается

import os

a = os.environ.get("BOT_EMAIL")
b = os.environ.get("BOT_PASS")

print(a, b)

и дает мне этот вывод, как и ожидалось

[email protected] pass_

Но проблема возникает, когда я пытаюсь запустить скрипт из возвышенного текста 3, он дает мне это

None None

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

Я нуб в программировании и Linux, было бы очень полезно, если бы кто-то мог решить эту проблему.


person Samip Karki    schedule 22.09.2020    source источник
comment
~/.bashrc предназначен только для интерактивных оболочек bash.   -  person jordanm    schedule 22.09.2020
comment
Обратите внимание, что прятаться — плохой термин для того, что вы описываете. Вы можете избавить себя от необходимости вводить информацию вручную, но переменные среды и файлы конфигурации оболочки не являются безопасными средствами для хранения или передачи конфиденциальной информации, такой как пароли.   -  person John Bollinger    schedule 22.09.2020
comment
В этом ответе от Jenny D на вопрос Скрытие паролей в сценариях оболочки содержится превосходный совет о пароле безопасность. Я рекомендую вам прочитать это.   -  person mattst    schedule 24.09.2020


Ответы (3)


Sublime наследует свои переменные среды от среды, в которой он был запущен. Таким образом, если вы запустите его из bash, он сможет прочитать все переменные, которые вы установили при запуске. Если вы запустите его из файла sublime_text.desktop (значок в меню или на боковой панели), он сможет прочитать только те переменные env, которые были установлены при запуске процесса Launcher, то есть при входе в систему. Итак, если вы не хотите всегда запускать из командной строки, поместите переменные среды в свой файл ~/.profile, затем выйдите из системы и снова войдите. Помещение их в ~/.bashrc не будет работать, так как это читать только для интерактивных сеансов.

Кроме того, вы можете определить переменные окружения в своей системе сборки. Образец может выглядеть примерно так:

{
    "shell_cmd": "python3 -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",

    "env": {"PYTHONIOENCODING": "utf-8",
            "MYVAR1": "value1",
            "MYVAR2": "value2"
    }
}

Преимущество этого заключается в возможности изменять переменные и значения без необходимости выхода и повторного входа в систему.

person MattDMo    schedule 22.09.2020

Я думаю, что MattDMo коснулся этого (но просто чтобы уточнить, почему это важно, поскольку я недавно решил эту же проблему)

Ваша IDE наследует переменную env от файла program-startup. Чтобы новая переменная окружения вступила в силу: выключите и перезапустите IDE.

person Matt    schedule 30.03.2021

Вы устанавливаете переменную среды для своего локального пользователя. Sublime, скорее всего, должен работать как другой пользователь. Вы можете понять это из команды top или ps.

Если вы хотите установить глобальные переменные, изучите /etc/profile или /etc/environment.

person rickydj    schedule 22.09.2020
comment
Нет, вы не хотите запускать редактор от имени другого пользователя, и вы определенно не хотите возиться с глобальными переменными и /etc/ файлами... - person MattDMo; 22.09.2020