プロセスがファイルに対して操作を実行すると、Linux カーネルは次の順序でチェックを実行します。
<オール>随意アクセス制御 (DAC) またはユーザーによるアクセス制御。これには、従来の UNIX スタイルのアクセス許可チェックと POSIX アクセス制御リスト (ACL) の両方が含まれます。従来の UNIX チェックでは、現在のプロセスの UID および GID と、アクセスされているファイルの UID および GID を、設定されているモード (読み取り/書き込み/実行) に関して比較します。アクセス制御リストは、従来の UNIX チェックを拡張して、パーミッション制御に関するより多くのオプションを許可します。
強制アクセス制御 (MAC) またはポリシー ベースのアクセス制御。これは、もはや実際のモジュールではない Linux セキュリティ モジュール (LSM) を使用して実装されます (以前はそうでしたが、削除されました)。これらは、従来の UNIX スタイルのセキュリティ チェック以外のモデルに基づく追加のチェックを有効にします。これらのモデルはすべて、どのコンテキストでどのプロセスに対してどのような操作が許可されるかを記述したポリシーに基づいています。
これは、inode アクセス (ファイル アクセスを含む) の例で、オンラインの Linux クロス リファレンスへのリンクを使用して私の回答を裏付けています。 「function_name
(filename:line)" は Linux カーネルのバージョン 3.14 のものです。
関数 inode_permission
(fs/namei.c:449) 最初にファイルシステム自体の読み取り許可をチェックします (sb_permission
fs/namei.c:425 で)、__inode_permission
を呼び出します。 (fs/namei.c:394) do_inode_permission
の inode で読み取り/書き込み/実行権限と POSIX ACL を確認する (fs/namei.c:368) (DAC) と security_inode_permission
の LSM 関連のパーミッション (MAC) (security/security.c:550).
1 しかありませんでした この順序の例外 (DAC の次に MAC):mmap チェックのためでした。しかし、これは Linux カーネルの 3.15 バージョンで修正されています (関連するコミット)。
DAC
==Discretionary Access Control
、http://en.wikipedia.org/wiki/Discretionary_access_control
MAC
==Mandatory Access Control
、http://en.wikipedia.org/wiki/Mandatory_access_control
ACL
==Access Control List
、http://en.wikipedia.org/wiki/Access_control_list
ACL
制御方法 DAC
によって適用される制御を指定します または MAC
. MAC
DAC
は、明示的で集中管理されており、明示的な許可がない限り、ユーザーがオブジェクトに権限を付与することを許可しません。 アクセス可能なオブジェクトへのアクセス権を他のユーザーに付与できます。
MAC
ACL
s は常に最初にリクエストに適用され、アクセスが拒否された場合は処理が停止します。アクセスが許可されている場合、DAC
ACL
s が適用され、アクセスが拒否されると処理が停止します。 MAC
の両方によってアクセスが許可されている場合のみ そして DAC
ACL
ユーザーは要求したオブジェクトにアクセスできますか。
SELinux
MAC
です Linux 向けの実装 (他にもあります)、従来の rwx
完全な DAC
フォームを所有するユーザーとグループと組み合わせたファイルのアクセス許可 ACL
. SELinux
「ポリシー」は基本的に MAC
です ACL
.
口論して申し訳ありませんが、ここにある答えのいくつかはかもしれませんと思います 間違っている。 Fedora の http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html から直接:
<ブロック引用>SELinux ポリシー ルールは、DAC ルールの後にチェックされます。 DAC ルールが最初にアクセスを拒否する場合、SELinux ポリシー ルールは使用されません。