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