通常、Web アプリケーションを実行するサーバーには、CentOS、Ubuntu、Debian などの Linux ディストリビューションが含まれています。現時点では、サービス アーキテクチャを形成するために必要な Nginx、PHP、MySQL などのアプリケーションの権限制御が非常に重要です。各サービスには、コード ディレクトリに対する権限要件が異なります。特定の権限が不足すると、サービスはサービスを実行できなくなります。これにより、アクセス許可の要件が緩和され、侵入や改ざんのリスクが生じます。
PHP の実行フレームワークは、通常、Nginx と組み合わせて LNMP を形成するか、Apache と組み合わせて LAMP アーキテクチャを形成します。ここでは、Nginx を例として説明します。 Nginx サービスを実行するために必要なもの。
Nginx 自体は PHP 構文を解析できないことがわかっているため、静的ファイル (HTML など) については Nginx が直接解析して結果を返しますが、PHP ファイルについては、Nginx はファイルを PHP インタープリタ php-fpm に転送します。処理後、応答がクライアントのブラウザに返されます。
したがって、コード ディレクトリ内の Nginx サービスと PHP サービスに必要な権限を統合する必要があります。
① root ユーザーが一律に使用される場合、一般のゲスト アカウントはアプリケーションにアクセスできなくなります。nginx が root として実行されるように設定されている場合、大きなセキュリティ リスクが発生します。一度攻撃されると、root ID が攻撃されます。システム内のすべてを実行するために取得されます。
コード ディレクトリの権限が一律に rwxrwxrwx に設定されている場合、ユーザーがブラウザを通じてコード ディレクトリを直接変更できるという潜在的な危険が存在します。
したがって、最善の方法は、それらを新しいユーザー グループに分類し、そのユーザー グループに Nginx と PHP の実行に必要な権限を割り当てて、Web アプリケーションの権限ディレクトリ管理を実現することです。多くの場合、チームは www ユーザー グループを使用してコード ディレクトリのアクセス許可を管理し、ユーザー www を均一に管理します。
Nginx 設定ファイル nginix.conf
このファイルに分割された実行権限は www ユーザーの下で設定されているため、Nginx の子プロセスも www ユーザーによって実行されます。 ps aux | grep nginx
を表示するには:
nginx のメイン プロセスが root で、他のサブプロセスが次のプロセスであることがわかります。 www
nginx.conf 設定のすべてのユーザー:
同じ、php 実行モードもメイン プロセス ルートによって実行されます。子プロセス プール (プール) の設定は www ユーザーによって実行されます。具体的な設定は etc\php-fpm.conf にありますphp ルート ディレクトリの
に 2 行を追加します。 :
user = www group = www
。 ps aux | grep php
を使用して、プロセスで使用されるユーザー ID を表示することもできます:
ps aux | grep mysql
を通して、次のことがわかります。 MySQL サービスは mysql ユーザーの下で実行されています。このサービスでは、php コードが mysql に接続するときに、mysql のユーザー名とパスワードを持ってくるだけです。データ層は www として統一する必要があるため、www として統一する必要はありません。基盤となるデータのセキュリティを確保するために、ビジネス ロジック層から分離する必要があります。 mysql の承認は主に、新しいユーザーを追加し、mysql サービスで権限を分割することです。これは、データのセキュリティを確保するために、さまざまな PHP ビジネスが異なる権限範囲を持つ ID に接続するように制御するために使用されます。
user www www;
user = www group = www
drwxr-xr-x 就是755
以上がnginx、php-fpm、mysql のユーザー権限を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。