ドメイン遷移
プロセスがプログラムを実行しようとすると、以下の処理が行われます。
[source] は現在のドメイン名(例: <kernel> /usr/sbin/sshd /bin/bash )または現在のドメイン名の最後のパス名(例: /bin/bash )を表します。
[current_domain] は現在のドメイン名(例: <kernel> /usr/sbin/sshd /bin/bash )を表します。
[current_namespace] は現在のドメインの名前空間の名前(例: <kernel> /usr/sbin/sshd /bin/bash ドメインの場合は <kernel> )を表します。
[destination] はプログラムの実行要求が成功した場合に遷移するドメイン名(例: <kernel> /usr/sbin/sshd /bin/bash /bin/cat )を表します。
[candidate] はパーミッションのチェックの対象となるパス名(例: /bin/cat )を表します。
ステップ |
内容 |
|---|---|
(1) プログラムのパス名を取得 |
要求されたプログラムのパス名を取得し、それを [candidate] とします。 |
(2) aggregator ディレクティブのチェック |
もし、例外ポリシーに |
(3) file execute ディレクティブのチェック |
ドメインポリシーに 存在しない場合、プロファイルの CONFIG または CONFIG::file または CONFIG::file::execute (後者が前者より優先されます)で mode=enforcing という設定が行われていた場合にはプログラムの実行要求は拒否されます。 |
(4) ドメイン遷移の決定 |
1番最初に、例外ポリシーに
2番目に、例外ポリシーに
3番目に、例外ポリシーに 4番目に、 [current_domain] [candidate] を [destination] にします。 |
(5) 遷移先ドメインの作成 |
ステップ (4) で決定した [destination] が存在しない場合には作成します。 reset_domain で決定された [destination] を作成できなかった場合には、プログラムの実行要求は拒否されます。 ステップ (4) で決定された [destination] を作成できなかった場合で、かつ、プロファイルの CONFIG または CONFIG::file または CONFIG::file::execute (後者が前者より優先されます)で mode=enforcing という設定が行われていた場合にはプログラムの実行要求は拒否されます。 |
(6) インタプリターのチェック |
(インタプリタを必要とするプログラムの場合、)インタプリタに対する読み込み許可が [destination] ドメインに与えられておらず、かつ [destination] ドメインに割り当てられているプロファイル( CONFIG または CONFIG::file または CONFIG::file::open (後者が前者より優先されます))のモードが mode=enforcing の場合、実行要求は拒否されます。 |
(7) プログラムの実行 |
もし、カレントプロセスが要求されたプログラムによって正常に置き換えられた場合、カレントプロセスは [destination] ドメインへと遷移します。 |