バックグラウンドタスクをカバーする一連のRailsCastsエピソードがありました。
あなたの問題に最もふさわしいのは、おそらく「バックグラウンドでのレーキ」です。これは良い出発点になる可能性がありますか?名前が示すように、RubyonRailsからのrakeタスクのトリガーをカバーしています。
システム設定を変更するための最も明白な解決策は、ルートとしてデーモンを実行することです。デーモンは、新しいホスト名やサーバーの新しいIPアドレスなど、いくつかの(非常に制限され、厳密にサニタイズされた)入力を受け入れます。エピソード「StarlingandWorkling」と「 CustomDaemon」もこれに役立つ可能性があります。
よりクリーンな解決策は、を使用することsudo
です。私が考えることができるこれを行うための2つの(同様の)方法があります:
rakeタスクを実行するユーザーに特定のコマンド( hostname
、など)へのsudoアクセスを許可します。ifconfig
これには大きなセキュリティ問題が発生する可能性があります。私のお気に入りの例は、実行するまでは無害に見えるvimへのsudoアクセスを許可することですsudo vim
。その後!bash
、突然、テキストエディタを介してマシンへのフルルートアクセスが可能になります。
もう1つの方法(安全に実行する方が簡単です)-必要なタスク(ホスト名の変更など)を実行するrakeタスク(またはいくつかの個別のスクリプト)を用意します。/usr/bin/myapp_systemtasks
が所有していると言うと、root:root
そのスクリプトへのsudoアクセスを許可します。スクリプトが受け入れる入力をサニタイズするように十分注意してください(シェルエスケープなどを防ぐため)。
したがって、それを行う方法はいくつかありますが、結局のところ、システムレベルの構成へのWebインターフェイスを作成しているため、安全に行うのは非常に困難です。何をするにしても、十分にテストされていることを確認してください(あなたや他の人によって)