невозможно добавить значение с резким знаком в переменной окружения

Мне нужно установить пароль для переменной среды, но проблема в том, что пароль включает в себя острый знак, и когда я хочу использовать эту переменную, просто покажите мне до первого резкого знака. например, предположим, что he#l#lo - это мой пароль, и когда я устанавливаю его на /etc/environment с помощью PASSWORD_API="he#l#lo", я печатаю его, просто показываю he и оставляю символ после #. но когда я использую export PASSWORD_API="he#l#lo" из терминала, все нормально, в чем проблема, добавляя переменную окружения из \etc\environment, я не могу изменить пароль, поэтому, если у вас есть идеи, пожалуйста, помогите мне. спасибо

1
задан 7 August 2019 в 13:40

2 ответа

Насколько я могу сказать, это - ограничение как pam_env модуль читает строки файла среды (прежде чем, даже пытаясь проанализировать их в name=value пары).

А именно, в _pam_assemble_line функция (в libpam/pam_handlers.c):

        /*
         * we are only interested in characters before the first '#'
         * character
         */

        while (*s && *s != '#')
             ++s;

Кажется, нет никакого условия для обработки заключенных в кавычки или завершенных строк никто по-другому.

Если необходимо установить переменную среды с такими символами, то необходимо будет сделать это в другом месте - например, создавая файл /etc/profile.d/password-api.sh содержа строку

export PASSWORD_API="he#l#lo"

который должен быть получен значением по умолчанию /etc/profile.


Конечно, поскольку я уверен, что Вы знаете, хранить пароли ГДЕ УГОДНО в простом тексте является плохой идеей - если Ваше приложение предоставляет другую возможность (такую как использование основанной на ключе аутентификации или добавление пароля надежно к агенту), необходимо использовать его.

3
ответ дан 3 December 2019 в 07:20

Удалите пробелы вокруг знака "равно":

$ PASSWORD_API="he#l#lo"
$ echo $PASSWORD_API
he#l#lo
0
ответ дан 3 December 2019 в 07:20

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

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