日本語

開発者ツール · Chmod 計算機

ディレクトリに対する実行ビットの動作と、644 フォルダが破損する理由

· 仕組み

chmod unix 開発者ワークフロー

ディレクトリ トラバーサルを別個の Unix パーミッション ビット図として表示
オリジナル ToolAcre ベクトル イラスト

ディレクトリ上では、x は何かを実行するものではありません。それは横断する権利を与えます。この投稿では、read/search 分割、それによって生成される奇妙なケース、およびそれらを回避するモードについて説明します。

読み取り可能なファイルに対するアクセス許可が拒否されました — ファイルは 644、ディレクトリは 644 ですが、cat はまだ失敗します

読み取り可能なファイルは、そのディレクトリに関連するクラスの実行がないと、アクセスできないままになることがあります。記事 501 では、フォルダーを実行するのではなく、ディレクトリの走査実行を呼び出します。計算機のディレクトリの説明はより明確です。読み取りはエントリのリストを許可し、書き込みはエントリの変更を許可し、実行はディレクトリへの入力と名前による内部のファイルへのアクセスを許可します。モード 644 には、どのクラスにも実行ビットがありません。

ターゲットをディレクトリに設定して、644 と 755 を比較します。最初のレンダリングは rw-r--r--; 2 番目は rwxr-xr-x をレンダリングします。すべてのクラスが実行を取得しますが、両方のモードで書き込みを保持できるのは所有者だけです。この対比は、表現された権限の違いを説明しています。このページでは、ファイルの検査、アクセス プロセスの特定、または祖先ディレクトリが実際のパスをブロックしているかどうかのテストは行いません。

リストの読み取り、トラバースの実行 — ディレクトリ r では名前が表示され、x ではエントリを名前で開いて統計する方法

ディレクトリの読み取りと実行は、別個の説明を持つ別個のフラグです。読み取りはエントリのリストに対応します。実行は、ディレクトリに入り、その中にある名前付きファイルに到達することに対応します。したがって、クラスは数値モデル内に一方を持たずに他方を持たせることができます。マトリックスは、各クラス桁内の重み 4 で読み取りを配置し、重み 1 で実行することにより、その区別を視覚的に維持します。

他のクラスの数字を 4 から 5 に変更することに焦点を当てたデモです。シンボリック トリプルは r-- から r-x に移動し、ディレクトリの説明ではリストを保持しながら名前ベースの到達可能性が追加されます。これはコンバージョンの事実であり、ライブ アクセス テストではありません。所有権、ID、ACL エントリ、および必須ポリシーが存在しないため、計算ツールはどのクラスが実際のリクエストを制御するかを判断できません。

4 つの組み合わせ - x なしの r、r なしの x、両方、またはどちらでもない、およびそれぞれの組み合わせでユーザーが実際にできること

4 つの読み取りと実行の組み合わせは、より広範なシステム動作を割り当てなくても表現できます。数字 4 は r--、数字 1 は --x、数字 5 は r-x、数字 0 は ---です。ディレクトリ ターゲットの場合、生成された散文は、選択されたビットをリストおよび名前ベースの到達可能性と関連付けます。書き込みは独立したフラグのままであり、読み取りまたは実行のいずれにも暗黙的に含まれません。

3 桁のモードをラベルとして扱うのではなく、行列を使用して一度に 1 つのクラスを分離します。ボックスが変更されるたびにページは整数を再構築するため、一致する数字と記号の位置も一緒に移動します。ディレクトリを開いたり、検索を試みたりすることはできません。 4 つの組み合わせは正確にモデル化されたアクセス許可ですが、有効な結果は個別に観察されたターゲット コンテキストに依存します。

トラバーサルはすべての祖先に適用されます — パスの上位にある 1 つの制限されたディレクトリによって、その下にあるすべてのディレクトリにアクセスできなくなる理由

記事 501 では、有効なファイル モードでアクセスを解決できない理由として、親ディレクトリの実行権限が欠落していることが示されています。パス内の各ディレクトリ コンポーネントは、独自のモード質問を示します。計算機は、指定された各値を個別にデコードし、所有者、グループ、またはその他の実行者が存在するかどうかを表示できます。パスをたどったり、要求元の ID にどのクラスが適用されるかを判断したりすることはできません。

これにより、先祖分析が計算機機能ではなく外部検査ワークフローになります。親が 750 として報告される場合、ページには rwxr-x--- と表示されます。別のものが 700 の場合は、rwx------ と表示されます。この違いは具体的ですが、所有権とプロセスのメンバーシップが判明するまで結論は得られません。コマンド プレビューは不活性なままであり、どちらのディレクトリの変更が適切であるかという証拠はありません。

有効な例: Web ルートの修正 - 提供されたファイルまでの各ディレクトリをチェックし、755 または 750 を選択する

Web ルートの例では、ツリーに 1 つの値を規定するのではなく、提供されたモードをコンポーネントごとに検査します。モード 755 は、所有者 rwx とグループおよびその他の r-x を付与します。モード 750 は、グループ r-x を保持しながら、他のすべての権限を削除します。コンバーターを使用すると、その違いが目に見えるようになります。 Web プロセスを識別したり、パスを検出したり、トラバースが必要なクラスを選択したりすることはできません。

提供されたファイルをそのディレクトリとは別に確認してください。 644 などの指定されたファイル モードは rw-r--r-- をレンダリングしますが、ディレクトリとして選択された同じ番号は異なるアクションを記述し、どこでも実行されません。このターゲットに応じた表現により、ファイルの読み取りがディレクトリのトラバーサルと混同されるのを防ぎます。適合性は、実際の所有権、プロセス ID、祖先、およびページに存在しないアクセス制御層によって決まります。

再帰は正しく行われました — ツリー上の chmod -R 644 が古典的な間違いである理由と、capital X または find -type d がそれを回避する方法

再帰表示は意図的に控えめになっています。これを選択すると、生成された chmod コマンドに -R が挿入されるだけです。計算機はツリーを列挙したり、ファイルとディレクトリを区別したりしません。完了した 644 モードをどこにでも適用すると、すべてのクラスでディレクトリ実行がクリアされたままになります。このページにはその結果が表示されますが、大文字の X やファイル タイプの選択ワークフローは実装されていません。

生成されたシンボリック割り当ても固定されたままになります。 644 の場合、それらは u=rw,g=r,o=r であり、条件付きでトラバーサルを保存する相対コマンドではありません。 ls-style フィールドには rw-r--r-- が表示され、その割り当てリストと混同しないでください。ターゲットの選択、リンク処理、さまざまなオブジェクト タイプに配置される最終モードなど、外部再帰戦略はすべて、このルートの外側で検証する必要があります。

これでカバーされないもの — ディレクトリでのスティッキー動作と setgid 動作、および ACL マスクについては、それぞれの投稿で説明されています。

Sticky、setgid、および ACL マスクは、通常のトラバーサル質問とは別のものです。この計算機は、スティッキー表現と setgid 表現、およびターゲットに応じた説明を実装していますが、この記事の中心となる比較は、読み取りと実行のみが必要です。 ACL マスクはまったく表示されません。正しい基本モード変換では、追加のエントリが特定の ID へのアクセスを許可するか制限するかを確立できません。

Umask もテスト対象外です。このページは、完了モードを受け入れますが、その前のプロセス設定は受け入れません。ディレクトリが 644 で表示される場合、コンバータは欠落している実行位置を表示し、指定された別の値の候補コマンドを生成できます。このモードがなぜ生まれたのか、所有権が間違っているのか、あるいはモードを変更することで実際の失敗に対処できるのかどうかはわかりません。

要点: ディレクトリを使用するには x が必要です。計算機では、644 と 755 の差が r-- と r-x として表示されます。

重要な点は、この計算機の説明では、ディレクトリ x がエントリおよび名前ベースの到達可能性を表しているということです。モード 644 はグループとその他の r-- を表示しますが、 755 は両方の r-x を表示し、所有者の実行も追加します。同期された 8 進フィールド、シンボリック フィールド、行列、散文により、見慣れた数字を普遍的に正しいものとして扱うことなく、その区別を検査できるようになります。

何かを適用する前に、算術を超えて診断してください。関連する ID、所有権、各祖先に指定されたモード、およびターゲットのタイプを確認します。次に、計算機を使用して、完成した候補値を検証します。不正な表記法を拒否し、どのビットが変更されるかを正確に表示しますが、パスを開いたり、chmod を実行したり、アプリケーション ポリシーを評価したり、従来のモード ビットが唯一の権限であることを証明したりすることはありません。