Я пытался использовать gnome-keyring на безголовом сервере, но у меня возникла ошибка, поэтому я вернулся к переменным среды. https://unix.stackexchange.com/questions/690295/error-secret-tool-cannot-create-an-item-in-a-locked-collection
Я пробовал использовать .env и .profile, но последний не вызывается Bash, а используется .bash_profile. Установка переменной PATH в /etc/environment и .profile
Я не уверен, что это сработает для скриптов или утилит, когда я не вошел в систему, чтобы запустить их, даже если они работают с привилегиями root. Например, скрипт cron.daily, который отправляет отчет по электронной почте. Я хочу передать ему $EMAIL, а также передать эту переменную другим утилитам, таким как apticron, для безопасности и простоты изменения.
В этом ответе предлагается использовать env var, указывающий на файл конфигурации, для которого я предполагаю, что могу установить группу владения и разрешения. Но есть ли более традиционный метод? https://stackoverflow.com/a/26030125/4240654
РЕДАКТИРОВАТЬ: я только что протестировал сценарии после установки переменных в .bashrc, и они, похоже, работают. Все еще тестирую такие утилиты, как Apticron... которые, как оказалось, не принимают такие переменные, как ЭЛЕКТРОННАЯ ПОЧТА=$ЭЛЕКТРОННАЯ ПОЧТА
в /etc/apticron/apticron.conf, вероятно, потому что он не запущен в корневом ENV. Хорошо, на самом деле оба они работают сейчас после комментирования ЭЛЕКТРОННАЯ ПОЧТА="корень"
в /usr/lib/apticron/apticron.conf (что не обязательно должно происходить при использовании обычного текстового сообщения электронной почты, так что это непоследовательно и только для Apticron). Используя файл и ЭЛЕКТРОННАЯ ПОЧТА=$(cat .env)
все еще не работает с Apticron.
Возможные решения:
Первые два из них требуют открытия файла или хранилища и оставления его открытым на виртуальной машине сервера, что будет таким же, как использование файла с ограниченным доступом, такого как .env.
.bashrc по умолчанию имеет значение 644, поэтому его может прочитать любой другой пользователь, хотя каталог /root равен 700, поэтому его нельзя пройти? Что еще более важно, переменные окружения, даже установленные только пользователем root, доступны всем пользователям. Возможно, потому, что все дочерние процессы наследуют родительские переменные окружения. Postfix хранит свой пароль в отдельном файле с 600 правами доступа, принадлежащем пользователю root, а затем хэширует его для использования в памяти.