Назад | Перейти на главную страницу

Запретить регистрацию переменных окружения в sudo

Я пытаюсь предоставить секретное значение скрипту через переменную среды, но не регистрирую его sudo в auth.log.

На данный момент у меня есть файл:

/etc/secret-key
export SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR

Этот файл принадлежит пользователю root: root (0400).

С помощью cron и sudo, Я могу запустить скрипт под www-data user и укажите это значение.

5 * * * * root . /etc/secret-key; sudo -u www-data --preserve-env=SECRET_CONFIG_KEY /path/to/script

Но auth.log файл затем содержит такие строки, как:

Aug 19 18:30:01 server sudo: root : TTY=unknown ; PWD=/root ; USER=www-data ; ENV=SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR ; COMMAND=/path/to/script

Это может прочитать любой пользователь adm group и каждый день присылает мне электронные письма через LogWatch.


Я рад рассмотреть альтернативные подходы.

Основная функция заключается в предоставлении этого секретного значения скрипту с помощью www-data account, где этой учетной записи предоставляется доступ к этому значению только по мере необходимости (учетная запись не должна иметь доступа для чтения к файлу секретного ключа).

В качестве примечания, www-data учетная запись не может редактировать ни один из своих сценариев, учетная запись используется только для их запуска.

Вам, вероятно, следует использовать su скорее, чем sudo для этого.

Рассмотрим что-то вроде:

su www-data -w SECRET_CONFIG_KEY -c /path/to/script