日本語

開発者ツール · Chmod 計算機

Unix パーミッション モデル: 1970 年代の chmod から POSIX モード ビットまで

· 背景

chmod unix アクセス制御

別個の Unix パーミッション ビット図として示される従来のモード モデル
オリジナル ToolAcre ベクトル イラスト

所有者の/group/others モデルは、驚くほどほとんど変更されずに数十年にわたって生き残っています。この投稿では、POSIX がどこから来たのか、POSIX が何を標準化したのか、そしてなぜ POSIX が依然としてほとんどのジョブに適合するのかを追跡します。

1970 年代の設計を 2020 年代のデプロイメントに — すべてのコンテナーと CI ランナーは今でも rwx を使用しており、その理由を知るのに役立ちます

現在のデプロイメントには、0644 などのモードや rw-r--r-- などのシンボリック文字列がまだ存在しますが、このリポジトリは履歴アーカイブではありません。その証拠は、実装された表現、つまり 12 ビット、決定論的変換、および 8 進数およびシンボリック入力の検証です。すべての Unix 派生システムに関する日付、発明者、特許、クレームについては、ここでは提供されていない情報源が必要です。

The calculator therefore offers a present-tense view of a compact permission model. One integer drives owner, group, and other controls plus setuid, setgid, and sticky.出力は、8 進数、シンボリック、および行列形式で確認できます。合意は一貫した変換を証明するものであり、モデルの起源、普遍性、強制を証明するものではありません。

現在のデプロイメントには長期間有効な表記が表示されますが、このリポジトリは履歴ソースではありません

9 つの通常のビットが 3 つの等しいクラスを形成します。所有者、グループ、その他はそれぞれ、重み 4、2、および 1 を持つ読み取り、書き込み、および実行の位置を受け取ります。電卓は、末尾の 3 つの 8 進数字、9 文字の記号行、チェックボックス マトリックス、およびファイルまたはディレクトリに対して生成された平易な英語の説明など、あらゆる場所でその順序を維持します。

640 のモードは、系統クレームのない構造を示します。所有者 6 は読み取りと書き込みを意味し、グループ 4 は読み取りを意味し、その他の 0 は通常のアクセス許可がないことを意味し、rw-r----- が生成されます。記事 501 で説明されているように、これらは計算可能なフラグです。実際の所有者、グループ、プロセスの特定は変換の対象外のままです。

実装されたモデルには 3 つのクラスに 9 つの通常ビットがあります

Setuid は 4000 マスクとして実装されます。通常のファイルでは、setuid と owner run の両方が存在する場合、レンダラーは s を owner 実行位置に配置します。 setuid が所有者実行なしで存在する場合、代わりに S をそこに配置し、特別なビットとその下の通常の実行ビットの間の重要な違いを保持します。

ファイルの説明では、小文字の場合はファイル所有者の ID による実行として説明され、大文字の組み合わせには何も実行されないことが示されます。これらのステートメントは、この実装の出力を説明します。このリポジトリは特許記録や主な歴史を提供していないため、このセクションではメカニズムの帰属やその導入日については言及しません。

setuid 動作が実装されています。特許履歴の出典がない

ディレクトリの説明では同じ数値が使用されますが、通常のビットには異なる動詞が使用されます。リストのエントリを読み取り、エントリの作成、名前変更、および削除を行うカバーの書き込み、ディレクトリに入って名前付きコンテンツに到達するカバーの実行を行います。この実装では、ディレクトリの setgid が、新しく作成されたファイルにそのディレクトリのグループを継承させるものとして説明されています。

Sticky は 1000 で表され、t または T として他の実行位置を占めます。ディレクトリの場合、ツールは共有エントリの制限付き削除について説明します。これらは、計算機によって提示される実装されたセマンティクスです。ブランチ履歴やクロスシステム系統は確立されず、ローカルの動作を確認するためにライブ ファイルシステムがクエリされることもありません。

ディレクトリの特殊ビットの動作がリネージ要求なしで記述されています

ソースはすべてのマスクに直接名前を付けます。所有者には 0400、0200、および 0100 が付けられます。グループの場合は 0040、0020、および 0010。その他の場合は、0004、0002、および 0001。 Setuid、setgid、および Sticky は、4000、2000、および 1000 を追加します。変換は、外部標準に準拠するものではなく、ビット テストとビットごとの組み合わせです。

入力ルールも同様に具体的です。 8 進数は、0 から 7 までの 1 ~ 4 桁を受け入れます。オプションで 0 または 0o スタイルの先頭形式も使用できます。シンボリック入力は、9 個の位置、または認識されたファイル タイプ文字を含む 10 個の位置を受け入れます。リポジトリは、すべての実装または標準がまったく同じ表面文法を受け入れることを確立するものではありません。

名前付きビット マスクと変換セマンティクスが検証されます。普遍的な規格の主張はそうではありません

コンパクト モデルには意図的な制限があります。これは、1 つの所有者クラス、1 つのグループ クラス、および 1 つのその他のクラスを提供しますが、指定ユーザー エントリ、指定グループ エントリ、ACL マスク、またはデフォルト ACL は提供しません。また、機能セットもありません。これらのメカニズムは、一見普通の rwx 文字列や成功した 8 進数変換からは推測できません。

コマンド生成ではモデルは拡張されません。 8 進数の引数、または明示的な u=、g=、および o= 句を発行し、必要に応じて u+s、g+s、または +t を追加します。結果は表示されたテキストのままになります。責任あるレビューでは、モードを完全なアクセス制御アカウントとして扱う前に、ACL、機能、所有権、および強制の証拠を個別に収集します。

ACL と機能は実装されたモード モデルの外にあります

このソース セットには、Windows、VMS、プラン 9、またはその他のオペレーティング システムのアクセス許可履歴との比較がサポートされていません。それらの物語を省略することは、記憶されている対照を事実として提示するよりも正確です。この計算機は、実装するモード表現のみを示しており、そのテストでは、無関係なシステムの進化ではなく、変換動作を確立できます。

同じ注意が広範な互換性言語にも当てはまります。認識された先頭のファイル タイプ文字は、9 つ​​の許可位置の前で解析される可能性がありますが、それは普遍的な ls フォーマットであることを証明するものではありません。このツールで受け入れられている表記法を正確に解釈したものとして出力を使用し、これらのソースに裏付けられた境界を超えた動作については、信頼できるプラットフォームのドキュメントを参照してください。

他のオペレーティング システムのアクセス許可履歴はソースなしで省略されています

ここで精査しても生き残れるのは、実装されたモデルのコンパクトさです。 12 の名前付きビットは 3 つの通常のアクセス許可クラスと 3 つの特別なフラグをカバーし、8 進ビューとシンボリック ビューは同じ整数を異なる形式で公開します。無効な数字や間違って配置された記号文字は自動的に修復されるのではなく拒否されるため、変換中にエラーが表示されます。

歴史の授業をしなくても、実践的な内容を理解するにはこれで十分です。モードをデコードし、各クラスを調べて、s、S、t、または T が実行位置を置き換えているかどうかを確認します。次に、証拠が止まったところで停止します。計算機は表現と生成されたテキストを説明しますが、所有権、ポリシー、ファイルシステムの動作、および歴史的な来歴については他のソースが必要です。