Monit vs Source Control: проблемы с разрешениями

392
Oddthinking

Я пытаюсь быть хорошим. Это моя большая ошибка.

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

У меня все хорошо, я не запускаю с правами root: Monit запускает веб-сервер, и я не хочу, чтобы он запускался с правами root в случае проблем с безопасностью. Итак, у меня есть специальный пользователь 'monit', у которого есть разрешения, необходимые для запуска и остановки некоторых ключевых процессов, и это все.

Процесс monit читает из файла ~ monit / .monitrc, и monit настаивает на том, что файл может быть прочитан только тем пользователем, которым он запущен - т.е. пользователем monit.

У меня все хорошо, я храню все свои рабочие сценарии и конфигурации в системе управления версиями (Mercurial), так что я могу перестраивать машины с теми же характеристиками. Я или другие разработчики регистрируем изменения в сценариях управления исходным кодом, а затем перетаскиваем результаты на рабочий компьютер. Символические ссылки указывают из ~ monit / .monitrc в каталог управления исходным кодом.

Тем не менее, вот где все это падает: каталог управления исходным кодом записывается Mercurial, когда я извлекаю последние сценарии, но команда pull не запускается как monit, поэтому файл monitrc доступен для записи другому пользователю ... не любит и не побежит

Я могу постоянно разбивать и изменять файл monitrc до и после каждого извлечения, но это чревато упущениями.

Я не вижу, как попросить Монит расслабиться по поводу владения. Я не вижу, как липкие биты помогут.

Какие-либо предложения?

3

1 ответ на вопрос

0
terdon

Вы всегда можете создать hgскрипт, который вызывает, hgа затем обрабатывает разрешения. Что-то вроде

!#/bin/bash /usr/bin/hg.bin $@ && chmod 400 ~monit/monitrc && chown monit ~monit/monitrc 

Сохраните скрипт как /usr/bin/hg(или где установлен ваш hgбинарный файл) и

mv /usr/bin/hg /usr/bin/hg.bin chmod 744 ~monit/monitrc 

Если предположить, что обычный пользователь имеет право на запуск chmodи chownкоманды, которые должны работать.