開発者ツール · Chmod 計算機
chmod で表現できないもの: 機能、不変ファイル、MAC
· 背景
chmod unix アクセス制御
モード ビットは、操作が成功するかどうかを決定するいくつかのレイヤーのうちの 1 つです。この投稿では、その他 (ファイル機能、chattr フラグ、SELinux、AppArmor) と、それぞれの拒否を認識する方法を紹介します。
Root は 644 ファイルを書き込むことができません — モードは Yes と表示され、chmod は何も変更せず、エラーが継続します
モードによっては、操作が失敗しても操作が許可される場合があります。計算機は 644 を rw-r--r-- としてデコードします。これは、所有者が通常のファイルを読み取り、変更できる一方、グループやその他のユーザーは通常のファイルを読み取ることができることを意味します。これにより、提供された従来のビットのみが解決されます。これは、プロセスの所有権、パスのアイデンティティ、または別の強制層が存在しないことを証明するものではありません。
ソースでは、機能、不変属性、必須アクセス ポリシー、マウント フラグ、名前空間、システムコール フィルター、ACL、所有権など、モデル化されていないコントロールの名前がいくつか挙げられます。モードを再度開始したり、別の chmod コマンドを生成したりしても、それらについては何も表示されません。まず、8 進数、記号数、および行列の一致を確認します。失敗が続く場合は、chmod の推測を広げるのではなく、環境から証拠を収集してください。
このツールが認識できないレイヤーでは、モード互換の操作が失敗する可能性があります
計算機は、外部コントロール間の順序をモデル化しません。そのデータ モデル全体は、8 進数の 0000 から 7777 までの整数であり、所有者、グループ、その他、setuid、setgid、およびスティッキー ブール値に展開されます。説明ではその値とターゲット タイプを使用します。カーネル決定パス、セキュリティ モジュール シーケンス、またはシステムコールの結果は計算に含まれません。
この制限により、ページは制御された最初のステップになります。モードを確認し、トラバースと実行を区別し、特殊ビット文字に注意してください。アーティクル 501 により、所有権が追加され、親ディレクトリが近くのチェックとして実行されます。さらに、これらのソースは、ACL、必須ポリシー、マウント、属性、名前空間、機能、またはフィルター間の診断ランキングを提供しません。互換モードは質問を絞り込むだけです。
計算ツールは、外部強制レイヤー間の順序をモデル化しません。
ファイルの機能は入手可能な証拠の範囲外です。実装には、機能名、データ パーサー、検査コマンド、または setuid との対話のアカウントは含まれません。 setuid を 4000 としてエンコードし、実行可能な通常のファイルを説明できます。これは、このリポジトリがモデル化も文書化もしていない、より詳細な権限システムとの比較になるべきではありません。
このページが証明していることは具体的です。モード 4755 は rwsr-xr-x になり、その概要名は setuid になり、割り当てには u+s が追加されます。モード 4644 では、所有者実行が存在しないため、大文字の S が使用され、ほとんどの場合、間違いと呼ばれる組み合わせが公開されます。テストにより、これらのモードの事実が確立されます。外部ツールは、機能が存在するかどうか、アクセスを許可するか、より良い設計を提供するかを判断する必要があります。
ファイル機能はソース セットの外にあります
不変属性と追加専用属性もモデルには存在しません。計算機は、ファイルシステム属性を読み取ったり、属性を変更するコマンドを認識したりしません。その行列には、所有者、グループ、その他の rwx に加えて 3 つの特殊ビットが含まれています。したがって、可視の書き込みビットは書き込みの成功を保証できず、繰り返しビットを切り替えても、ページが観察したことのない属性を診断することはできません。
区別を有効に保ちます。 644 が正しくレンダリングされる場合、オーナー書き込みは従来のモードで存在します。それは表現の証拠であり、完全な書き込みではありません。ページは安全に引用された表示パスを開いたり、生成されたコマンドを実行したりしません。実際の障害に十分なビットが伴う場合は、観察されていない状態を原因とするのではなく、実際のオブジェクトとシステムを検査してください。
不変属性と追加専用属性はソース セットの外にあります
必須のアクセス制御コンテキスト、プロファイル、ログはここでは解析されません。情報源では、SELinux と AppArmor については、計算機が観察できない決定の例としてのみ言及しています。これらは、コンテキスト構文、ポリシー セマンティクス、ログ形式、または診断コマンドを提供しません。したがって、モード単独ではどちらかのシステムに拒否を帰すことはできません。証拠は執行環境から得られるものでなければなりません。
ファイルまたはディレクトリのセレクターは、この境界を強化します。 run、list、create、delete、enter、reach などの動詞は変更されますが、整数は変更されず、ポリシー ラベルも読み取られません。 755 プログラムとディレクトリは、rwxr-xr-x を共有しながら、さまざまな通常のアクションを記述します。どちらの説明も必須ポリシーの結果を予測するものではないため、検証済みモードを保持し、プラットフォーム ログを参照してください。
必須のアクセス制御コンテキストとログはソース セットの外にあります
提供されたモードではマウント オプションを明らかにできません。電卓は、8 進数またはシンボリック テキスト、およびコマンド表示のみに使用されるオプションのパスを受け入れます。そのパスを開いたり、そのマウントを識別したり、設定を読み取ったりすることはありません。ソースには、外部の問題として読み取り専用、実行なし、setuid なしの動作がリストされていますが、これらのポリシーを診断するためのプラットフォームの詳細は提供されていません。
生成されたテキストには、8 進数モード、引用符で囲まれたパス、および表示された -R フラグが含まれる場合がありますが、ファイルシステムが要求を受け入れることを証明するものはありません。完全にラウンドトリップする特別なビット値であっても、目に見えないルールの下では無効になる可能性があります。コマンドをレビュー成果物として扱い、アクセス許可が変更されたか実行可能になったと主張する前に、ターゲット ファイルシステムを検証します。
提供されたモードからマウント オプションが検出されません
名前空間とシステムコール フィルターはモード モデルのどこにも表示されません。入力には、プロセス ID、コンテナー コンテキスト、syscall リスト、またはランタイム構成は含まれません。このページでは、プロセスが同じパスを参照しているか、予期したオブジェクトに到達しているか、呼び出しがフィルタリングされているかどうかを知ることができません。これらの質問は、権限トリプル内に 4、2、および 1 を追加することとは根本的に異なります。
成功した変換から実行時メカニズムを推測しないでください。検証では、不正な形式の 8 進数、記号の長さ、および文字の配置ミスがカバーされます。有効な結果は、テキストが表現可能なモードにマップされていることのみを意味します。実行環境は検証されません。生成されたシェル テキストは不活性であるため、名前空間とフィルターの分析には、これらのソースにない実行時の証拠が依然として必要です。
名前空間とシステムコールフィルターは表示されません
モードはコンパクトで、適用または除外を簡単に判断できるため、モードから始めます。値を変換し、各クラスを検査し、ファイルとディレクトリを区別し、特殊ビットのプレフィックスを公開します。 8 進数、記号、行列、要約、説明の間の一致により、伝統的な質問が適切に形成されます。排他的権限ではなく、欠落または過剰なビットが明らかになる可能性があります。
実際のシステムからの証拠のみを使用して続行します。所有権、ACL、属性、必須ポリシー、マウント、機能、名前空間、フィルター、およびアプリケーション ルールはここでは検出されません。プレビューではファイルの読み取りも変更も行われません。規律ある結論は狭いです。供給モードの算術演算をローカルで解決し、否定を知らずにより広範な chmod 値を循環するのではなく、外部の強制を調査します。