0

nginxから動的にカスタムディレクティブを記述しようとしていPHPます。しかし、私はセキュリティに関心があります。PHPはユーザー/グループの下で実行されphp:php、nginx構成ファイルはによって所有されroot:rootます。

PHPがnginx構成ファイルを開いて書き込むことができるようにするには、ファイルがユーザーとグループによって所有されている必要がありますphp:php

これを行うための最良の方法は何ですか?おそらく、構成ファイルの読み取りと書き込みを実際に行う別の言語またはPHPの2次プロセスがあり、PHPは単に2次プロセスと通信します。

4

1 に答える 1

0

nginx を生成する PHP ファイルの種類によって異なります。これが小さなスタンドアロン スクリプトである場合、root として実行しても問題はありません。今のところ、このnginxファイルを生成して書き込む必要があるのはphp Webサイトだと思います。

ファイルを実際に作成して書き込む部分がまだかなり自己完結型で単純な場合、私はそれをスタンドアロンの実行可能ファイル (php などで) にし、PHP Web サイトからいくつかのコマンドライン パラメーターを取得してから、setuidこの実行可能ファイル (root が所有している間)。ただし、この実行可能ファイルは安全である必要があることに注意してください: http://en.wikipedia.org/wiki/Setuid#Security

別の方法は、php に nginx.conf への書き込みを許可することです (直接、ファイルを誰でも書き込み可能にするか、グループ書き込み可能にして、php ユーザーが属するグループを指定するか、ファイルをコピーする別のプロセスを用意します。いくつかのphpで書かれたファイルから)。ただし、これは非常に恐ろしいことです.nginx.confファイルには実行されるコマンドが含まれている可能性があり(認証用、またはcgiとして)、おそらくルートとして実行されます(同じ構成ファイルがコマンドの場合) . したがって、このようにして、基本的にphpユーザーがrootとして任意のコマンドを実行できるようにします....

うまくいくかもしれないもう1つのこと(それが可能かどうかはわかりません):おそらく、構成ファイルの1つまたは2つのパラメーターのみを微調整したいでしょう。これらの 1 つまたは 2 つのパラメーターだけを別の場所 (php 書き込み可能) から読み取ることができるかどうかを確認してください。

于 2012-10-15T13:49:12.533 に答える