日本語

開発者ツール · Chmod 計算機

Windows、macOS、FAT、およびネットワーク共有上の chmod: モード ビットが停止する場所

· 背景

chmod unix アクセス制御

ファイルシステム境界を個別の Unix パーミッション ビット図として表示
オリジナル ToolAcre ベクトル イラスト

モード ビットは Unix のアイデアであり、他のファイルシステムはそれらを偽装するかドロップします。この投稿では、NTFS、FAT、macOS、SMB または NFS マウントのアクセス許可に何が起こるか、また git がどのように反応するかについて説明します。

Git はすべてのファイルを変更済みとして表示します。唯一の変更は、別のファイルシステムでクローンを作成した後のモード 100644 から 100755 です。

Git の 100644 から 100755 への変更により、通常の違いが 1 つ明らかになります。644 には実行機能がありませんが、755 には 3 つのクラスすべてに実行機能が含まれています。末尾の値をデコードすると、rw-r--r-- および rwxr-xr-x が生成されます。計算ツールでは、なぜ Git が変更を報告したか、どのプラットフォームが変更を生成したか、ファイルシステムとリポジトリの設定が観察に影響を与えたかどうかを説明できません。

ポリシーを変更する前に、コンバータをニュートラル デコーダとして使用します。 644 と 755 を入力し、各実行ボックスを比較して、シンボリック出力を確認します。オプションのパスは、表示されるコマンド テキストにのみ影響します。ディスクからは何も読み取られません。 Git パーサーやメタデータへのアクセスがない場合、ページはモードの意味を確立しますが、プロジェクトの意図や許可権限は確立しません。

Git のモード変更はここでデコードできますが、プラットフォームに起因するものではありません

Windows ACL の動作には、ここに存在しないソースが必要です。この計算機は、1 つの所有者クラス、1 つのグループ クラス、その他全員、および 3 つの特殊ビットをモデル化します。これは、Windows アクセス エントリ、継承、アイデンティティ、または構文を表しません。概要では WSL メタデータについて言及していますが、提供されたリポジトリ資料には何も記載されていないため、プラットフォームに関する詳細な主張は入手可能な証拠を超えることになります。

ストレージが別のモデルを使用する場合でも、シンボリック表記は依然として有用な算術演算です。パーサーは、オプションで認識されたタイプ マーカーを含む 9 つの許可文字を受け入れ、各位置を検証し、それらを 1 つの整数に変換します。 Windows または WSL がその値を保持するか、合成するか、または無視するかを判断することはできません。表示されたコマンドを適用する前に、該当するプラットフォームのドキュメントを参照してください。

Windows ACL および WSL メタデータの動作にはプラットフォーム ソースが必要です

FAT ファミリ マウント マスクはこの実装の対象外です。このパネルには、umask、fmask、dmask、mount-option、または filesystem フィールドがありません。報告されたモードを所有者、グループ、その他のビットに分割することはできますが、設定からそのモードを導出したり、FAT または exFAT がそのモードを生成した方法を証明したりすることはできません。より広範な行動に関する主張には、外部プラットフォームのソースが必要です。

証拠が裏付ける方向に従ってください。信頼できるシステムの観察から有効なモードを取得し、それを入力して、表示されている読み取り、書き込み、および実行フラグを検査します。 4 桁のサマリーにより、供給された特殊ビットも明らかになります。この算術をマウント診断に逆にしないでください。整数は原点を記録せず、ページはストレージをクエリしません。

FAT ファミリ マウント マスクは実装外です

余分な macOS メタデータは、このルートでは解析されません。シンボリック入力では 9 つの許可位置が必要で、オプションでその前に認識されるファイル タイプ文字が続きます。末尾のインジケーターは受け入れられず、ACL エントリやフラグも読み取られず、パス メタデータもクエリされません。基本の rwx モードは個別にデコードできますが、追加の macOS 信号はすべてこれらのソースの外に残ります。

クリーンな 755 が与えられると、計算機は rwxr-xr-x をレンダリングし、選択されたターゲットについて説明します。ディレクトリの実行とは、名前付きエントリを入力して到達することを意味します。ファイル実行とはプログラムを実行することを意味します。実装に裏付けられたこの区別は、プラットフォームの帰属にも残ります。追加の macOS アクセス ルール、表記、またはモード ビットとの相互作用には、このリポジトリ マテリアルでは入手できない特定の証拠が必要です。

余分な macOS メタデータはこのルートでは解析されません

SMB および NFS の ID マッピングまたはモード合成は実装の外にあります。コンバータはサーバーに接続せず、マウント設定を読み取らず、UID を解決せず、所有者またはグループを識別できません。そのクラスは、整数から派生した抽象スロットです。ネットワーク マウントによって報告されるモードはデコード可能なままですが、ネットワーク ファイル システムの詳細な動作はここではサポートされていません。

この境界により、カテゴリ エラーが防止されます。モード 775 は、所有者とグループが rwx を持ち、その他が r-x を持つことを意味します。リモートの所有権、グループのメンバーシップ、ID マッピング、またはサーバーが表示を合成したかどうかは明らかにされません。ここで提示されたビットを確認し、認可を決定する前に、実際の環境からエクスポート、クライアント、サーバー、および ID の証拠を収集します。

SMB および NFS の ID またはモードの合成は実装の範囲外です

Git がモード変更を報告する場合、ポリシーを改訂する前に値をデコードします。 100644 および 100755 の場合は、644 および 755 を使用します。 rw-r--r-- は rwxr-xr-x になります。所有者、グループ、その他の各ゲインは、その数字が重み 1 を取得するため実行されます。これにより、原因を Git、プラットフォーム、またはファイルシステムに割り当てることなく、セマンティックな違いが確立されます。

これらのソースに含まれていないプロジェクトの証拠から意図を判断します。計算機は、core.fileMode の読み取り、.gitattributes の解析、インデックスの検査、または実行可能ファイルの状態が権限があるかどうかの判断を行うことができません。そのパスベースのコマンドは実行されないままになります。検証された rwx の差異をリポジトリのレビューに持ち込み、目的の信頼できる情報源を特定した後にのみポリシーを変更します。

作業例: リポジトリ ポリシーを変更する前にモード Git レポートをデコードする

Windows 権限コマンドは別のモデルに属します。このツールは、8 進数値や u=rw,g=r,o=r などの chmod 形式を出力します。 Windows 構文を解析したり、3 つの Unix クラスを Windows ACL にマップしたりすることはありません。従来の 12 ビットではすべての ID を保存できず、別の認証システムによって表されるエントリにアクセスできないため、もっともらしく見える変換はすべて発明になります。

オブジェクトとストレージの承認も同様に分離されています。計算機は従来のモードのみを受け入れ、サービスに接続したり、バケット ポリシーを読み取ったり、オブジェクト ID を処理したりすることはありません。実際の Unix スタイルの 8 進数値または記号値をデコードする必要がある場合に使用します。オブジェクト ストレージやその他のモデルの場合は、chmod 表記を強制するのではなく、ネイティブ ポリシー データとドキュメントを検査してください。

Windows 構文とオブジェクト ストレージは別個のモデルのまま

chmod を使用する前に、どの層がパーミッションの真実を所有しているかを確認してください。 Git、マウント、または別のプラットフォームによって提供されるモードは、所有者、グループ、その他、および特殊ビットに変換できます。検証では、s、S、t、および T が特別な状態を保持しながら、不正な形式の数字と記号の位置が検出されます。変換は価値を説明するものであり、その起源や権威を説明するものではありません。

最終レビューでは、算術演算を環境から分離する必要があります。モードを確認し、正確に異なるクラスとビットを記録し、ターゲットをファイルまたはディレクトリとして識別します。次に、ネイティブ ソースを使用して、プラットフォーム、ファイル システム、リポジトリ設定、ID、ACL、およびポリシーを検査します。このページの狭い役割は貴重です。つまり、クロスプラットフォームの適用を診断するふりをせずに、信頼できる Unix モードの解釈を行うことができます。