Была серия RailsCasts эпизодов, которые покрывали фоновые задачи.
Наиболее подходящей для вашей проблемы является, возможно, "Rake in Background", что может быть хорошей отправной точкой? Как следует из названия, он охватывает запуск задач рейка из Ruby on Rails.
Наиболее очевидным решением для изменения системных настроек было бы иметь демона с правами root, который принимает несколько (очень ограниченных и строго дезинфицированных) входов, таких как новое имя хоста или новый IP-адрес для сервера Другие эпизоды "Starling and Workling" и "Custom Daemon" могут помочь с этим.
Более чистым решением было бы использовать sudo
. Есть два (похожих) способа сделать это, о которых я могу думать:
Разрешить доступ к некоторым командам (например, hostname
, ifconfig
) пользователю, который будет запускать задачи рейка. Это может иметь большие проблемы с безопасностью. Мой любимый пример этого разрешить доступ SUDO к Vim, который, кажется безобидным, пока вы бежите sudo vim
, то !bash
и вдруг у вас есть полный доступ к корневой машине через текстовый редактор ..
Другой путь (что проще сделать безопасно) - иметь задачу rake (или несколько отдельных скриптов), которая выполняет требуемые задачи (например, изменение имени хоста). Скажем, /usr/bin/myapp_systemtasks
принадлежит root:root
, а затем разрешить доступ к этому скрипту sudo. Удостоверьтесь, что вы очень осторожны, чтобы очистить вход, который принимает скрипт (чтобы предотвратить такие вещи, как утечка оболочки).
Итак, есть способы сделать это, но в конце дня вы создаете веб-интерфейс для системных конфигураций, что очень сложно сделать безопасно. Независимо от того, что вы решите сделать, убедитесь, что это хорошо протестировано (от вас и других)
Это большая информации, но я не уверен, что это решает мою проблему. Эти задачи недолговечны, и их действительно не нужно задавать. Кроме того, запуск отдельного сервера для обработки переименования хоста немного переборщит. – 2008-11-04 12:07:28