Linux - защита переменных среды - PullRequest
8 голосов
/ 09 ноября 2010

Просто интересно, есть ли способ защитить переменные окружения в * nix системе так, чтобы их нельзя было прочитать из какого-либо простого текстового файла, но он доступен в среде.

Я знаю, что мы всегда можем использовать разрешения уровня файловой системы для .bashrc / .bash_profile, но что, если определенные переменные (например, пароли БД) должны быть полностью скрыты?

Один из способов - написать какой-нибудь программный / perl-скрипт для:

  1. Взять входные данные из простого текстового файла и зашифровать / хэшировать содержимое (а затем избавиться от простого текстового файла)
  2. Используйте то же самое, чтобы расшифровать время выполнения файла и экспортировать значения из расшифрованного вывода (Я знаю, что эту программу можно использовать для выгрузки где-то дешифрованных значений, но сейчас я не беспокоюсь об этом)

Есть ли другой лучший и более очевидный способ добиться этого?

Спасибо!

-Gaurav

Ответы [ 3 ]

5 голосов
/ 09 ноября 2010

Ни за что.Даже если вы скрываете его из текстового файла, он по-прежнему доступен из /proc/<pid>/environ (linux) или ps e (другой unix).

2 голосов
/ 09 ноября 2010

От кого вы их защищаете?

Краткий ответ: «Нет». Пользователь может видеть свои собственные переменные среды, если вы не создадите их так тщательно, чтобы они никогда не могли получить доступ к оболочке. Но какой редактор вы позволите им использовать? Вы сказали «Вим»? О, у них есть доступ к оболочке, в конце концов.

1 голос
/ 09 ноября 2010

Это возможно, но очень косвенно.Вам нужно будет сохранить конфиденциальные данные в файл, доступный только для чтения процессу, который запускает процесс, которому он нужен, в переменной среды./proc/###/environ доступен для чтения только пользователю, от имени которого запущен процесс, поэтому данные там находятся в безопасности.

Но, точнее, правильный способ скрыть такие вещи, как пароли базы данных, - сохранить их в файл.Доступно для чтения только пользователю и / или группе, в которой работает программа, читающая их.Не беспокойтесь о передаче их в переменную окружения (если вам действительно не нужно по какой-то причине), просто попросите процесс прочитать их из файла.

Например, если вы работаете с веб-сайтом и CGIСценарии / двоичные файлы запускаются Apache, который запускается как пользователь: группа apache:apache, сохраняет пароль базы данных, который необходим CGI, в файл, принадлежащий apache:apache с разрешениями, такими как rw-r----- (640).Таким образом, чтобы кто-то мог прочитать файл, он должен быть либо root, членом группы apache, либо запустить программу чтения с действующим пользователем или группой apache.

Единственным преимуществом использования переменных среды является то, что вы можете удалить их из среды перед запуском подпроцесса, тогда как если подпроцесс должен принадлежать одному и тому же пользователю, он может прочитать защищенный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...