開発者ツール · Chmod 計算機
POSIX ACL と chmod モード ビット: rwx が不十分な場合
· 背景
chmod unix アクセス制御
モード ビットは、1 人の所有者、1 つのグループ、およびその他全員をカバーします。この投稿では、ギャップを埋める POSIX.1e ACL モデル、それが chmod とどのように相互作用するか、共有グループが依然としてより簡単な解決策である場合について説明します。
モデルで許可されているリーダーより 1 つ多いリーダー — ファイルはアプリ グループに属しており、グループ外の 1 人の監査人がそれを読み取る必要があります
通常モード モデルには 4 番目の ID スロットがありません。 1 人の所有者、1 つのグループ、およびその他全員の権限を記述することはできますが、追加の監査人を指定することはできません。電卓はその境界を正確に反映しており、そのマトリックス、シンボリック表示、および要約は、ユーザーごとまたはグループごとのアクセス エントリではなく、これら 3 つのクラスと特別なビットを公開します。
追加のリーダーを 1 つ追加するためだけに他のクラスを拡張すると、そのクラスに分類されるすべての ID に影響します。計算機は、0640 から 0644 への移動など、算術的な変更を示すことはできますが、より広範囲のアクセスが受け入れられるかどうかを判断することはできません。名前付きアクセスには、このルートの外にある証拠とツールが必要です。
3 つのクラスの制限 — 従来のモデルには所有者、グループなどにそれぞれ 1 つのスロットしかない理由
後続の 8 進数はそれぞれ 1 つの固定クラスに属します。所有者、グループ、その他は読み取り、書き込み、および実行フラグを受け取り、9 つの通常の位置を生成します。モデルは、指定された人物に対して別のトリプルを挿入できません。したがって、変換が成功すると、基本モードが忠実に記述されますが、他の場所にアタッチされた追加エントリについては何も示されません。
この制限は、明らかに制限のある出力を読み取る場合に重要です。 rw-r----- のシンボリック値は、基本所有者、グループ、および 0640 で表されるその他のビットを示します。計算機は ACL データを検査せず、外部の強制レイヤーも観察しないため、他の ID がオブジェクトを読み取れないことは証明されません。
POSIX.1e ACL — 指定されたユーザーと指定されたグループのエントリが同じファイルに追加され、setfacl で設定され、getfacl で読み取られます。
名前付きユーザーおよび名前付きグループのエントリは実装されていません。ソースには、ACL レコードのパーサーやフォーマッタ、ACL マスク、setfacl または getfacl オペレーションが含まれていません。これらの概念は、外部アクセス制御メカニズムの使用を動機付ける可能性がありますが、この記事では、電卓の明示的な境界を認識する以上のコマンド構文や動作を指定することはできません。
別の作業を実行している間、基本モードを表示したままにします。報告された 8 進数値を入力し、所有者、グループ、およびその他のトリプルを確認し、特別なビットを記録します。次に、信頼できるファイルシステムのドキュメントと、名前付きエントリに適切な外部ツールを使用します。計算機で生成された chmod プレビューは、ACL を作成、検査、または保存しません。
名前付き ACL エントリには、ここでは実装されていない外部ツールが必要です
chmod 変更、グループクラス ビット、および ACL マスクの間の関係は、ここで実装されていない動作によって異なります。計算機は単純に 12 ビット モードを変換し、代入または 8 進数の引数を出力します。実効権利を計算するための ACL 状態がないため、名前付きエントリが制限されるかどうかを予測できません。
モード出力だけから ACL の結果を説明することは避けてください。 0640 から 0600 への変更により、このモデルの 3 つのグループクラス ビットが明らかに削除されます。名前付きユーザー、名前付きグループ、またはマスクに関するものには、実際の ACL とプラットフォーム ルールが必要です。表示されたコマンドを ACL を持つオブジェクトに適用する前に、ファイルシステムのドキュメントでそれらを確認してください。
ACL マスクと chmod の対話にはファイルシステムのドキュメントが必要です
デフォルトの ACL 継承もルートを超えます。このページにはディレクトリ ACL 入力、作成操作、および umask フィールドがありません。ターゲット セレクターをファイルからディレクトリに切り替えると、固定モードに関連付けられた平易な英語の動詞が変更されます。ファイルの作成、継承のモデル化、将来のオブジェクトのアクセス許可の計算は行いません。
同じ理由で、現在のディレクトリ モードは、ここでのすべての新しい子のモードを予測できません。計算機は、ディレクトリの読み取り、書き込み、および実行が、エントリのリスト化、変更、および名前付きコンテンツへの到達に対応していることを説明できます。これらのベース ビットを、決して受信しないデフォルト エントリ、作成リクエスト、またはプロセス マスクと組み合わせることはできません。
デフォルトの ACL 継承と umask 相互作用はこのルートの外にあります
追加のリーダーが必要なファイルについては、提供される基本モード 0640 を検討してください。電卓は rw-r-----: 所有者は読み取りおよび書き込み、グループは読み取り、その他はなしをレンダリングします。これは、その入力によってサポートされる完全なステートメントです。監査人を特定するものでも、そのアイデンティティを配置するための 4 番目のクラスを提供するものでもありません。
ACL 作業が他の場所で行われる間、この基本モードのレコードを保存してください。外部プロセスが後で別のモードを報告した場合は、それを再度デコードして各クラスを比較します。 ACL コマンドをモード フィールドに貼り付けたり、コマンド プレビューに名前付きエントリが組み込まれていると想定したりしないでください。これは常に、現在表示されている数値モードのみを表します。
成功した例: ACL 作業が他の場所で行われている間、基本モードを読み取り可能にしておく
他の ACL ファミリ、リモート ファイルシステム ルール、およびマウント サポートは、これらのソースによって確立されていません。計算機は、ストレージ タイプ、マウントされたオプション、オペレーティング システム、または ACL 操作の可用性を検出しません。したがって、ACL ビューの欠落は実装の境界であり、基礎となるオブジェクトに高度なアクセス制御が欠如しているという証拠ではありません。
必須のポリシー、機能、所有権、およびプロセス ID も同様に別個です。基本モードを完全に知っていても、これらの入力を置き換えることはできません。モード変換を 1 つのレイヤーとしてレポートし、すべての未観測レイヤーに明示的にラベルを付けます。これにより、クリーンな rwx 表示が完全な認証分析と誤解されるのを防ぎます。
他の ACL モデルとマウントのサポートは推測されません
3 つのクラスで十分な場合、計算機はそれらのクラスを正確かつ可逆的に計算します。そうでない場合は、名前付き例外を他のクラスに強制するのではなく、基本アカウントを読み取り可能な状態に保ちます。 8 進数、シンボリック、およびチェックボックス ビューは、同じ所有者、グループ、その他、および特殊ビットの値に一致する必要があります。
停止ルールは単純です。このルートは、基本モードの算術演算と、ACL 状態の外部の信頼できるツールに使用します。名前付きエントリ、マスク、継承、またはファイルシステムのサポートを rwx だけから推論しないでください。慎重にレビューすると、電卓がソース コードに含まれていないアクセス制御構造を実装しているかのように装うことなく、これらの個別の証拠ソースが結合されます。