権限のないユーザーでデーモンを実行する

権限のないユーザーでデーモンを実行する

Ubuntu VPSでThin Rubyアプリケーションサーバーを設定しようとしています。特定のアカウントを作成し、その下にrbenvとすべてのgemをインストールしました。

私は次の目標を達成するための便利な方法を探しています。

  1. 権限のないユーザーアカウントでThin Rackアプリケーションを実行します。
  2. アプリケーションをデーモンとして実行するように設定
  3. システム起動時にデーモンが自動的に実行されるようにします。
  4. デーモンプロセスを再起動可能にする
  5. Unixドメインソケットを介してアプリケーションにアクセスするには、Nginxを有効にしてください。

目標2と3が最もトリッキーです。システムの起動時にそのユーザーとして実行されるようにユーザーのスクリプトを定義できますか?

答え1

起動時に起動するには、ユーザーのcrontabファイルに次の行を追加します(使用crontab -e)。

パラメータ付き@reboot /path/to/your/script

スクリプトの実際の内容は必要に応じて異なります。単にデーモンを起動することも、設定を渡すよりスマートなエージェントを起動することもできます。これにより、何らかの理由でサービスが予期せず終了した場合にサービスを自動的に再起動できます。

答え2

ディストリビューションの起動スクリプトテンプレートを調整するだけです。私は誰もがそのようなテンプレートを持っていると信じています。

systemdを使用している場合は、ユニットファイルで使用するユーザーを指定できます。

以前のinitスクリプトを使用している場合、スクリプトはstartprocまたはを使用できますstart_daemon。これらのラッパーにパラメーターを追加してユーザーIDを構成できます。

または、プログラムをSUID(ルートではなくターゲットユーザー)に設定し、実行権限を信頼できるユーザー(またはルートのみ)に制限します。

関連情報