Была серия RailsCasts эпизодов, которые охватывали фоновые задачи.
Возможно, наиболее подходящей для вашей проблемы является "Грабли на заднем плане" , что может быть хорошей отправной точкой? Как следует из названия, оно охватывает запуск задач rake из Ruby on Rails.
Наиболее очевидным решением для изменения системных настроек было бы наличие демона, работающего от имени пользователя root, который принимает несколько (очень ограниченных и строго очищенных) входных данных, таких как новое имя хоста или новый IP-адрес для сервера. Другие эпизоды «Скворец и рабочий» и «Пользовательский демон» также могут помочь в этом.
Более чистое решение - использовать sudo
. Есть два (похожих) способа сделать это:
Разрешить sudo доступ к определенным командам (например, hostname
, ifconfig
) пользователю, который будет запускать задачи rake. Это может иметь большие проблемы с безопасностью. Мой любимый пример - предоставление sudo доступа к vim, который кажется безобидным, пока вы не запустите sudo vim
, затем !bash
, и вдруг у вас будет полный root-доступ к машине через текстовый редактор.
Другой способ (который легче сделать безопасным) - иметь задачу rake (или несколько отдельных скриптов), которая выполняет требуемые задачи (например, изменение имени хоста). Скажем, /usr/bin/myapp_systemtasks
принадлежит root:root
, затем разрешите sudo доступ к этому сценарию. Убедитесь, что вы очень осторожны, чтобы очистить входные данные, которые принимает сценарий (для предотвращения экранирования оболочки).
Итак, есть способы сделать это, но в конце дня вы настраиваете веб-интерфейс для конфигураций системного уровня, что очень сложно сделать безопасно ... Что бы вы ни решили сделать, убедитесь, что это хорошо проверено (вами и другими)