Что самый безопасный путь состоит в том, чтобы использовать sudo полномочия в сценарии?

У меня есть сценарий удара, который должен выполнить некоторые действия при использовании sudo, и с полномочиями пользователя root и с полномочиями для других пользователей, таких как основной пользователь на базе данных пост-ГРЭС. Эти действия должны быть выполнены, не используя пароль, основные действия должны скопировать некоторые файлы, указанные файлом списка, которые только доступны корнем, чтобы запросить, существует ли база данных пост-ГРЭС с определенным именем и взять дамп от базы данных.

Пользователь, запускающий скрипты, ответственен за запущение довольно многих различных скриптов. Я понимаю, что могу отредактировать /etc/sudoers файл с visudo со строкой как:

user ALL=(pg_dump_user) NOPASSWD:/usr/bin/pg_dump

или

user ALL=(pg_dump_user) NOPASSWD:/usr/bin/psql -lqt

Я знаю, что могу сделать команды в sudoers файле немного более определенными, добавляющими опциями команды и т.д.

Было бы более безопасно назвать сценарий, которым только доступно для редактирования root и использование того сценария в sudoers записях. Очевидно, с этим подходом я должен удостовериться, что полномочия каталога для местоположения сценария корректны, или это может просто быть заменено чем-то злонамеренным. Есть ли какие-либо другие меры, которые я могу принять для создания этого более безопасным?

3
задан 5 October 2016 в 13:45

1 ответ

Самое легкое решение состоит в том, чтобы просто включить Ваш сценарий в sudoers. Это не должно представлять проблемы как замена сценария..., пока ни один из родительских каталогов не перезаписываем некорневым пользователям. Однако любые ошибки безопасности в Вашем сценарии были бы выполнены как целевой пользователь, который мог бы представить что-то сомнительное.

самое безопасное решение состоит в том, чтобы или возрасти только, когда необходимое использование sudo в рамках Вашего сценария или иначе записать Ваш сценарий очень тщательно и контролировало свой код кем-то знакомым с Вашими проблемами безопасности.

В второй комментарий @muru к вопросу , предполагалось это, чем более простой язык сценариев (и код), тем менее подвержено это наличию дефекта безопасности. Я соглашаюсь с этим. Ограничение его для подчеркивания штриховой линией (принятие Вы имеете тире как/bin/sh) действительно поможет на этом. Используя более всесторонний язык как увеличения Python возможности и для того, что Вы хотите и что могло бы пойти не так, как надо, таким образом, я только предложу это, если Вы будете более довольны им, чем простой сценарий оболочки POSIX.

В конечном счете, это зависит от того, что делает Ваш код. Выясните свои риски и сколько усилий приложило бы, чтобы управлять ими, затем взвесить каждого против другого. Кто мог злоупотребить этим? Sudo оставляет журнал аудита, так является угрозой того, чтобы быть запущенным или удалил достаточно для контролирования потенциальных злоумышленников?

0
ответ дан 1 December 2019 в 22:25

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

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