日本語

開発者ツール · Chmod 計算機

nginx の修正 403 禁止: 重要なファイルとディレクトリのアクセス許可

· なぜそれが重要なのか

chmod unix アクセス制御

Web ルート診断を個別の Unix パーミッション ビット図として表示
オリジナル ToolAcre ベクトル イラスト

nginx からの 403 は、多くの場合、構成の問題ではなく、ファイル システムの問題です。この投稿では、nginx がどのユーザーとして実行されているか、およびパス内のすべてのディレクトリでどのビットが必要かを確認する方法を示します。

403 — ファイルは /home/deploy からのものであり、nginx はすべての URL に対して禁止していると表示します

nginx 403 にはモード ビットが含まれている可能性がありますが、このルートではその原因を特定できません。この計算機には、nginx 統合、ログ、構成パーサー、プロセス ルックアップ、パス ウォーカーはありません。これは、ディレクトリ クラスが実行されたかどうか、通常のファイル クラスが読み取られたかどうかなど、より狭い質問に答え、他の場所で収集された証拠を解釈するのに役立ちます。

デフォルトを仮定するのではなく、各パス コンポーネントで観察された正確なモードから開始します。各モードに入り、そのターゲット タイプを選択します。シンボリック テキスト、チェックボックス、散文はクラスのアクセス許可を公開し、変換を確認しますが、nginx がアクセスを試行したこと、使用した ID、またはファイルシステムのアクセス許可が応答を生成したかどうかを示すことはできません。

403 にはモード ビットが含まれている可能性がありますが、このルートではその原因を特定できません

計算機は nginx ワーカー ID を検出できません。所有者、グループ、その他のクラスはモデル化されますが、ユーザー名、プロセス、メンバーシップはモデル化されません。したがって、rwxr-xr-x などのモードは、ワーカーがオブジェクトを所有しているか、そのグループに属しているか、または他のグループに属しているかについては何も示しません。外部検査によりその分類を確立する必要があります。

アイデンティティの発見は、関連ビットに関するクレームに先行する必要があります。該当するクラスが証拠によって確立されると、マトリックスは読み取りが 4、書き込みが 2、実行が 1 として表示されます。それまでは、グループやその他の編集は推測に頼る必要があります。ルートはプロセス状態を読み取りません。サーバー アーキテクチャを推測するのではなく、指定されたモードを変換します。

計算機は nginx ワーカー ID を検出しません

各ディレクトリ コンポーネントを個別に提供されたモードとして検査します。ディレクトリの場合、実行ではエントリと名前ベースのアクセスが許可され、読み取りではリストが許可され、書き込みではエントリの作成、名前変更、削除が許可されます。ターゲット固有の説明は、パス自体を検査することを要求せずに、外部で確立されたクラスが特定のコンポーネント上で実行されたかどうかをレビュー担当者が判断するのに役立ちます。

ブラウザはルートから Web ルートまで移動しません。ブロックしているコンポーネントを見つけたり、存在を確認したり、ACL を検査したりすることはできません。観察されたすべてのディレクトリ モードを個別に指定し、最終的なオブジェクトを通常のファイルとしてチェックします。読み取りはリストではなくコンテンツに関係します。これは、ファイルシステム検査を置き換えるのではなく、収集された証拠を解釈します。

ファイルには r が必要で、それ以上は必要ありません。なぜ静的ファイルには 644 で十分であり、なぜファイルの 755 が修正ではないのか

静的ファイルの場合、644 は rw-r--r-- をレンダリングします。所有者は読み取りと書き込みを受け取りますが、グループとその他のユーザーは読み取りを受け取ります。誰も実行を受け取りません。この変換は、ファイルの読み取りと実行が別個のビットであることを示しています。サーバー ポリシーが存在しないため、このページには特定のサーバーを実行する必要があるかどうかを判断する根拠がありません。

ファイルとディレクトリの説明を区別してください。ディレクトリの実行はエントリと名前ベースの到達可能性を意味し、通常のファイルの実行はプログラムの実行を意味します。したがって、同じチェックボックスにはターゲット固有の散文が含まれます。 644 と 755 を比較するとビットが明確になりますが、構成、ID、ACL、およびポリシー コンテキストがなければ、403 を診断したり、ユニバーサル モードを規定したりすることはできません。

有効な例: /home/deploy/site/index.html のトレース — パス上の namei -l とブロッカーを明らかにする ls -l 行

サポートされる例は、パスの証拠が他の場所で収集された後に始まります。ディレクトリコンポーネントが 755 で、最終ファイルが 644 であるとします。計算機はディレクトリを rwxr-xr-x としてレンダリングし、グループおよびその他の実行をエントリおよび到達可能性として説明します。ファイルを rw-r--r-- としてレンダリングし、グループやその他のコンテンツ アクセスとしての読み取りを説明します。

コンポーネントが 750 の場合、その他のトリプルは --- ですが、グループは r-x のままです。その違いは重要かもしれませんが、nginx が他のものを使用していることを証明するものではありません。ルートは namei または ls を実行できないため、外部証拠がパスとモードを提供する必要があります。次に、すべての表現を同期して、レビュー中の転記エラーを削減します。

実用的な例: パスの各コンポーネントに対して指定されたモードを検査する

所有権の決定はモード変換の範囲外のままです。パネルには所有者またはグループが表示されず、chown または chgrp 操作は提供されません。デプロイメント、サービス、または共有グループの所有権のいずれかを選択することも、移動するコンテンツを評価することもできません。これらの決定には、情報源にないシステムとワークロードの証拠が必要です。生成されたモードはそのコンテキストを置き換えることはできません。

所有権が別の場所で解決されたら、モードがアクセスをどのように分割するかを比較します。モード 750 では、完全な所有者権限、グループの読み取りと実行が許可され、その他には何も許可されません。 755 は、その他の読み取りと実行を追加します。これには、労働者の階級を知ることが条件となります。 inert コマンドのプレビューは、所有権を変更したり、サーバー アクセスを確認したりしません。

所有権の選択はモード変換の外部のままです

構成、インデックスの選択、必須のアクセス制御、およびアップストリームの動作はここでは診断されません。ソースは、nginx 構成のロード、URI またはインデックスのチェック、ログの読み取り、アップストリームへの接続、または SELinux または AppArmor の監視を行いません。したがって、指定されたモードを正しく変換しても、nginx が 403 を返した理由を特定できません。サーバーの証拠がその質問に答える必要があります。

モードが疑わしいと思われる場合は、この区別を維持してください。パネルには、ディレクトリ クラスに実行がないこと、またはファイル クラスに読み取りがないことが示される場合がありますが、関連性は ID とパスの証拠に依存します。許容ビットでも他の原因を排除することはできません。モードで許可される内容を正確に述べてから、サーバー固有の診断に戻ります。

構成、インデックス、MAC、およびアップストリームの原因は診断されません

パスへのアクセスはすべてのコンポーネントに依存する可能性がありますが、計算機は一度に 1 つの指定された値を参照します。その長所は正確なデコードです。8 進数、記号テキスト、およびチェックボックスは同期を保ち、ディレクトリの散文はリスト、変更、および入力を区別します。これにより、アクセスを試みるコンポーネントやプロセスを発見したふりをすることなく、レビューが簡素化されます。

サーバー ID を確立し、このルートの外側のパス モードを収集します。外部で検証されたクラスに焦点を当てて、すべてのディレクトリをディレクトリとしてデコードし、最終オブジェクトを通常のファイルとしてデコードします。構成、ACL、および必須ポリシーを個別に調査します。電卓は算術演算を検証しますが、403 の原因を特定したり、修正を検証したりすることはできません。