LINUX.ORG.RU

Глобальные переменные в sudo bash скрипте

 , , , ,


0

1

Господа, возникла такая задача. Нужно в Bash-скрипте, запускаемом с sudo правами, считывать кастомные (мои) глобальные переменные, готовые прописаны в bash-конфиге с директивой export. Но из-за настроек безопасности в моей няшной убунточке, при запуске с sudo кастомные переменные сбрасываются.

Конкретно скрипт это программа duply, являющаяся обёрткой для duplicity - утилиты для бекапа. У этой duply есть три конфига: pre, conf, post, которые являются баш-скриптами. Я бы хотел запихнуть в глобальные переменные некоторые пути, чтобы не дублировать их в каждом из скриптов.

Вопрос, как наиболее разумно/практично/уникс-вейно этого добиться?

Варианты, до который я додумался сам: 1. Не запускать саму duply с sudo-правами. Операции, требущие админа, такие как монтирование webdav-ресурсов и создание LVM-снапшотов прописывать как sudo в скрипте, при этом отключив в sudoers запрос пароля, чтобы добиться автоматизированности скрипта.

2. Отключить политику безопасности, сбрасывающую кастомные переменные при запуске с sudo.

3. Вынести переменные в отдельный скрипт и подгружать его в каждом из скриптов-конфигов duply.

??? предложите что-то ещё


А что мешает сходить и прочитать из в самом скрипте?

man bash / SHELL BUILTIN COMMANDS / source

aedeph_ ★★ ()

Как вариант можно вызывать sudo с опцией sudo -E, так он сохранит глобальные переменные. Или в sudoers заюзать env_keep для сохранения глобальных переменных. Возможно, перед этим нужно будет закомментировать env_reset. Я использовал именно такой подход, когда нужно было обеспечить сохранение переменных, думаю и вам он подойдёт.

lucentcode ★★★★★ ()
Ответ на: комментарий от lucentcode

Возможно, перед этим нужно будет закомментировать env_reset

Не, не обязательно, если он после него укажет в
Defaults:<USER_LIST> env_keep += <свои переменные>

Deleted ()
Ответ на: комментарий от Deleted

Я так и делал. Но на http://stackoverflow.com/ народ писал, что в какой-то версии Ubuntu в sudo бага была, так что env_reset нужно было комментировать(иначе env_keep следом не работал). Потом багу исправили... Там даже ссылка на багтрекер была в том треде. В общем, если что, можно и подстраховаться...

lucentcode ★★★★★ ()
Ответ на: комментарий от lucentcode

Мне нравится вариант с sudo -E, пожалуй на нем и остановлюсь.

sudoers также буду иметь в виду.

Всем спасибо.

D_Lans ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.