オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Diff of /tags/htdocs/ja/1.6.x/new-policy-reference.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1093 by kumaneko, Fri Mar 28 05:06:28 2008 UTC revision 1094 by kumaneko, Wed Apr 9 05:14:41 2008 UTC
# Line 3  Line 3 
3  <head>  <head>
4  <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">  <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
5  <meta http-equiv="Content-Style-Type" content="text/css">  <meta http-equiv="Content-Style-Type" content="text/css">
6  <title>TOMOYO Linux ポリシー解説書</title>  <title>TOMOYO Linux ポリシ解説書</title>
7  <link rel="stylesheet" href="tomoyo.css" media="all" type="text/css">  <link rel="stylesheet" href="tomoyo.css" media="all" type="text/css">
8  </head>  </head>
9  <body>  <body>
10  <p style="text-align:right;"><a href="../../en/1.6.x/policy-reference.html">English Page</a></p>  <p style="text-align:right;"><a href="../../en/1.6.x/policy-reference.html">English Page</a></p>
11  <h1 style="text-align:center;">TOMOYO Linux ポリシー解説書</h1>  <h1 style="text-align:center;">TOMOYO Linux ポリシ解説書</h1>
12  <p style="text-align:right;">Last modified: $Date: 2008-03-03 16:32:30 +0900 (Mon, 3 Mar 2008) $</p>  <p style="text-align:right;">Last modified: $Date: 2008-03-03 16:32:30 +0900 (Mon, 3 Mar 2008) $</p>
13  <h1><a name="index">目次</a></h1>  <h1><a name="index">目次</a></h1>
14  <h2><a href="#Keyword_Index">1. キーワード一覧</a></p>  <h2><a href="#Keyword_Index">1. キーワード一覧</a></h2>
15  <h2><a href="#Introduction">2. はじめに</a></h2>  <h2><a href="#Introduction">2. はじめに</a></h2>
16  <p><a href="#word_expression_rules">2.1 単語の表記規則</a></p>  <p><a href="#word_expression_rules">2.1 単語の表記規則</a></p>
17  <p><a href="#wildcard_expression_rules">2.2 パターンの表記規則</a></p>  <p><a href="#wildcard_expression_rules">2.2 パターンの表記規則</a></p>
18  <p><a href="#word_length_rules">2.3 単語の長さに関する制約</a></p>  <p><a href="#word_length_rules">2.3 単語の長さに関する制約</a></p>
19  <p><a href="#line_length_rules">2.4 1行の長さに関する制約</a></p>  <p><a href="#line_length_rules">2.4 1行の長さに関する制約</a></p>
20  <p><a href="#memory_allocation_rules">2.5 メモリ使用量に関する制約</a></p>  <p><a href="#memory_allocation_rules">2.5 メモリ使用量に関する制約</a></p>
21  <h2><a href="#Policy_Files">3. ポリシーファイルに関して</a></h2>  <h2><a href="#Policy_Files">3. ポリシファイルに関して</a></h2>
22  <p><a href="#policy_file_locations">3.1 所在について</a></p>  <p><a href="#policy_file_locations">3.1 所在について</a></p>
23  <p><a href="#policy_file_modifiers">3.2 変更について</a></p>  <p><a href="#policy_file_modifiers">3.2 変更について</a></p>
24  <h2><a href="#Domain_Rules">4. ドメインに関して</a></h2>  <h2><a href="#Domain_Rules">4. ドメインに関して</a></h2>
25  <p><a href="#domain_definition">4.1 ドメインとは</a></p>  <p><a href="#domain_definition">4.1 ドメインとは</a></p>
26  <p><a href="#domain_transition">4.2 ドメイン遷移とは</a></p>  <p><a href="#domain_transition">4.2 ドメイン遷移とは</a></p>
27  <p><a href="#access_logs">4.3 アクセスログについて</a></p>  <p><a href="#access_logs">4.3 アクセスログについて</a></p>
28    <h2><a href="#Syntax_Details">5. キーワード詳細</a></h2>
29  <h2><a href="#features_for_intermediate">中級者向けの機能</a></h2>  <h2><a href="#features_for_advanced">6. 便利な機能</a></h2>
30  <p><a href="#sleep_penalty">ポリシー違反時のペナルティ指定</a></p>  <p><a href="#conditional_acl">6.1 条件付きアクセス許可の指定</a></p>
31  <p><a href="#conditional_acl">条件付きアクセス許可の指定</a></p>  <p><a href="#stateful_acl">6.2 ステートフルなアクセス許可の指定</a></p>
32  <h2><a href="#features_for_advanced">上級者向けの機能</a></h2>  <p><a href="#sleep_penalty">6.3 ポリシ違反時のペナルティ指定</a></p>
33  <p><a href="#stateful_acl">ステートフルなアクセス許可の指定</a></p>  <p><a href="#execute_handler">6.4 プログラムの実行可否をカーネルの外部で判断</a></p>
34  <p><a href="#denied_execute_handler_penalty">許可されていないプログラムの実行が要求された場合の代替処理指定</a></p>  <p><a href="#denied_execute_handler">6.5 許可されていないプログラムの実行が要求された場合の代替処理指定</a></p>
 <p><a href="#always_denied_execute_handler">プログラムの実行可否をカーネルの外部で判断</a></p>  
   
35  <hr>  <hr>
36    
37  <h1><a name="Keyword_Index">1. キーワード一覧</a></h1>  <h1><a name="Keyword_Index">1. キーワード一覧</a></h1>
# Line 83  Line 81 
81  <li><a href="#profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></li>  <li><a href="#profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></li>
82  <li><a href="#profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></li>  <li><a href="#profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></li>
83  <li><a href="#profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></li>  <li><a href="#profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></li>
84  <li><a href="#profile_MAC_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></li>  <li><a href="#profile_MAX_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></li>
85  <li><a href="#profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></li>  <li><a href="#profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></li>
86  <li><a href="#profile_MAX_REJECT_LOG">MAX_REJECT_LOG</a></li>  <li><a href="#profile_MAX_REJECT_LOG">MAX_REJECT_LOG</a></li>
87  <li><a href="#profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></li>  <li><a href="#profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></li>
# Line 208  Line 206 
206  <tr><td>tmp/</td><td>無効なパス名</td></tr>  <tr><td>tmp/</td><td>無効なパス名</td></tr>
207  </table>  </table>
208    
209    <p>ただし、例外として、 /proc/プロセスID/fd/ ディレクトリに表示されるパイプのパス名は pipe: で、ソケットのパス名は socket: で始まります。</p>
210    
211  <h2><a name="wildcard_expression_rules">2.2 パターンの表記規則</a></h2>  <h2><a name="wildcard_expression_rules">2.2 パターンの表記規則</a></h2>
212    
213  <p>パス名にはテンポラリファイルのように、毎回異なる文字が使われる場合があります。そのため、ワイルドカードを用いたパターン化を行うことが必要になります。 TOMOYO Linux に於いては以下のワイルドカードをサポートしています。</p>  <p>パス名にはテンポラリファイルのように、毎回異なる文字が使われる場合があります。そのため、ワイルドカードを用いたパターン化を行うことが必要になります。 TOMOYO Linux に於いては以下のワイルドカードをサポートしています。</p>
# Line 235  Line 235 
235    
236  <h2><a name="word_length_rules">2.3 単語の長さに関する制約</a></h2>  <h2><a name="word_length_rules">2.3 単語の長さに関する制約</a></h2>
237    
238  <p>Linux に於いてはパス名の長さに関する上限は存在しませんが、パス名を用いたアクセス制御を行うために無限の長さをサポートすることはできません。そのため、 TOMOYO Linux に於いては、単語の長さは4000バイトまでに制限されています。</p>  <p>Linux に於いてはパス名の長さに関する上限は存在しませんが、パス名を用いたアクセス制御を行うために無限の長さをサポートすることはできません。そのため、 TOMOYO Linux に於いては、単語の長さは終端の NUL 文字を含めて4000バイトまでに制限されています。</p>
239    
240  <h2><a name="line_length_rules">2.4 1行の長さに関する制約</a></h2>  <h2><a name="line_length_rules">2.4 1行の長さに関する制約</a></h2>
241    
242  <p>TOMOYO Linux に於いては、1行の長さは8192バイトまでに制限されています。</p>  <p>TOMOYO Linux に於いては、1行の長さは終端の NUL 文字を含めて8192バイトまでに制限されています。</p>
243    
244  <h2><a name="memory_allocation_rules">2.5 メモリ使用量に関する制約</a></h2>  <h2><a name="memory_allocation_rules">2.5 メモリ使用量に関する制約</a></h2>
245    
# Line 259  Total:          119794 Line 259  Total:          119794
259  </pre></td></tr>  </pre></td></tr>
260  </table>  </table>
261    
262  <h1><a name="Policy_Files">3. ポリシーファイルに関して</a></h1>  <h1><a name="Policy_Files">3. ポリシファイルに関して</a></h1>
263    
264  <h2><a name="policy_file_locations">3.1 所在について</a></h2>  <h2><a name="policy_file_locations">3.1 所在について</a></h2>
265    
266  <p>ポリシーファイルとは、アクセスの可否を定義したファイルです。システムの起動時に自動的にカーネルへと読み込まれます。</p>  <p>ポリシファイルとは、アクセスの可否を定義したファイルです。システムの起動時に自動的にカーネルへと読み込まれます。</p>
267    
268  <p>システムの起動時には、 /sbin/init というプログラムが実行されます。 /sbin/init の実行が要求されたときに、 /sbin/ccs-init というプログラムが存在していた場合、 /sbin/ccs-init が実行され、 /sbin/ccs-init の処理が終了してから /sbin/init の実行が開始されます。</p>  <p>システムの起動時には、 /sbin/init というプログラムが実行されます。 /sbin/init の実行が要求されたときに、 /sbin/ccs-init というプログラムが存在していた場合、 /sbin/ccs-init が実行され、 /sbin/ccs-init の処理が終了してから /sbin/init の実行が開始されます。</p>
269    
270  <p> /sbin/ccs-init は /etc/ccs/ ディレクトリにあるポリシーファイルを /proc/ccs/ ディレクトリを通じてカーネルへと読み込みます。</p>  <p> /sbin/ccs-init は /etc/ccs/ ディレクトリにあるポリシファイルを /proc/ccs/ ディレクトリを通じてカーネルへと読み込みます。</p>
271    
272  <table border="1">  <table border="1">
273  <tr><td>カーネルとのインタフェース</td><td>ポリシーファイル</td><td>定義されている内容</td></tr>  <tr><td>カーネルとのインタフェース</td><td>ポリシファイル</td><td>定義されている内容</td></tr>
274  <tr><td><a href="#profile">/proc/ccs/profile</a></td><td><a href="#profile.conf">/etc/ccs/profile.conf</a></td><td>プロファイル(制御レベルを定義したもの)</td></tr>  <tr><td><a href="#profile">/proc/ccs/profile</a></td><td><a href="#profile.conf">/etc/ccs/profile.conf</a></td><td>プロファイル(制御レベルを定義したもの)</td></tr>
275  <tr></td><td><a href="#manager">/proc/ccs/manager</a></td><td><a href="#manager.conf">/etc/ccs/manager.conf</a><td>マネージャ(ポリシーの変更ができるプログラムを定義したもの)</td></tr>  <tr><td><a href="#manager">/proc/ccs/manager</a></td><td><a href="#manager.conf">/etc/ccs/manager.conf</a><td>マネージャ(ポリシの変更ができるプログラムを定義したもの)</td></tr>
276  <tr><td><a href="#system_policy">/proc/ccs/system_policy</a></td><td><a href="#system_policy.conf">/etc/ccs/system_policy.conf</a></td><td>システムポリシ(システム全体で適用される設定)</td></tr>  <tr><td><a href="#system_policy">/proc/ccs/system_policy</a></td><td><a href="#system_policy.conf">/etc/ccs/system_policy.conf</a></td><td>システムポリシ(システム全体で適用される設定)</td></tr>
277  <tr><td><a href="#exception_policy">/proc/ccs/exception_policy</a></td><td><a href="#exception_policy.conf">/etc/ccs/exception_policy.conf</a></td><td>例外ポリシ(ドメインポリシの例外を定義したもの)</td></tr>  <tr><td><a href="#exception_policy">/proc/ccs/exception_policy</a></td><td><a href="#exception_policy.conf">/etc/ccs/exception_policy.conf</a></td><td>例外ポリシ(ドメインポリシの例外を定義したもの)</td></tr>
278  <tr><td><a href="#domain_policy">/proc/ccs/domain_policy</a></td><td><a href="#domain_policy.conf">/etc/ccs/domain_policy.conf</a></td><td>ドメインポリシ(ドメイン単位で適用される設定)</td></tr>  <tr><td><a href="#domain_policy">/proc/ccs/domain_policy</a></td><td><a href="#domain_policy.conf">/etc/ccs/domain_policy.conf</a></td><td>ドメインポリシ(ドメイン単位で適用される設定)</td></tr>
279  </table>  </table>
280    
281  <p>そのほかの情報を取得するためのインタフェースもあります。対応するポリシーファイルはありません。</p>  <p>そのほかの情報を取得するためのインタフェースもあります。対応するポリシファイルはありません。</p>
282    
283  <table border="1">  <table border="1">
284  <tr><td>カーネルとのインタフェース</td><td>内容</td></tr>  <tr><td>カーネルとのインタフェース</td><td>内容</td></tr>
285  <tr><td><a href="#query">/proc/ccs/query</a></td><td>管理者の指示待ちとなっているアクセス要求</td></tr>  <tr><td><a href="#query">/proc/ccs/query</a></td><td>管理者の指示待ちとなっているアクセス要求</td></tr>
286  <tr><td><a href="#.domain_status">/proc/ccs/.domain_status</a></td><td>定義されているドメイン名とプロファイル番号</td></tr>  <tr><td><a href="#.domain_status">/proc/ccs/.domain_status</a></td><td>定義されているドメイン名とプロファイル番号</td></tr>
287  <tr><td><a href="#meminfo">/proc/ccs/meminfo</a></td><td>メモリ使用状況</td></tr>  <tr><td><a href="#meminfo">/proc/ccs/meminfo</a></td><td>メモリ使用状況</td></tr>
288  <tr><td><a href="#grant_log">/proc/ccs/grant_log</a></td><td>ポリシーに違反しなかったアクセス要求のログ</td></tr>  <tr><td><a href="#grant_log">/proc/ccs/grant_log</a></td><td>ポリシに違反しなかったアクセス要求のログ</td></tr>
289  <tr><td><a href="#reject_log">/proc/ccs/reject_log</a></td><td>ポリシーに違反したアクセス要求のログ</td></tr>  <tr><td><a href="#reject_log">/proc/ccs/reject_log</a></td><td>ポリシに違反したアクセス要求のログ</td></tr>
290  <tr><td><a href="#self_domain">/proc/ccs/self_domain</a></td><td>自分が属しているドメインのドメイン名</td></tr>  <tr><td><a href="#self_domain">/proc/ccs/self_domain</a></td><td>自分が属しているドメインのドメイン名</td></tr>
291  <tr><td><a href="#.process_status">/proc/ccs/.process_status</a></td><td>プロセスが属しているドメイン名とプロファイル番号</td></tr>  <tr><td><a href="#.process_status">/proc/ccs/.process_status</a></td><td>プロセスが属しているドメイン名とプロファイル番号</td></tr>
292  <tr><td><a href="#.updates_counter">/proc/ccs/.updates_counter</a></td><td>ポリシーの変更カウンタ</td></tr>  <tr><td><a href="#.updates_counter">/proc/ccs/.updates_counter</a></td><td>ポリシの変更カウンタ</td></tr>
293  <tr><td><a href="#version">/proc/ccs/version</a></td><td>TOMOYO Linux のバージョン</td></tr>  <tr><td><a href="#version">/proc/ccs/version</a></td><td>TOMOYO Linux のバージョン</td></tr>
294  </table>  </table>
295    
296  <h2><a name="policy_file_modifiers">3.2 変更について</a></h2>  <h2><a name="policy_file_modifiers">3.2 変更について</a></h2>
297    
298  <p>カーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更することができるプログラム名を /proc/ccs/manager に登録します。プログラム名ではなくドメイン名で登録することもできます。</p>  <p>カーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシを変更することができるプログラム名を /proc/ccs/manager に登録します。プログラム名ではなくドメイン名で登録することもできます。</p>
299    
300  <ul>  <ul>
301  <li>/proc/ccs/manager に登録されているプログラム名を持つプロセス</li>  <li>/proc/ccs/manager に登録されているプログラム名を持つプロセス</li>
302  <li>/proc/ccs/manager に登録されているドメイン名を持つプロセス</li>  <li>/proc/ccs/manager に登録されているドメイン名を持つプロセス</li>
303  </ul>  </ul>
304    
305  <p>だけがカーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更できます。以下に例を示します。</p>  <p>だけがカーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシを変更できます。以下に例を示します。</p>
306    
307  <table border="1">  <table border="1">
308  <tr><td>  <tr><td>
# Line 317  Total:          119794 Line 317  Total:          119794
317  </td></tr>  </td></tr>
318  </table>  </table>
319    
320  <p>上記の制約に加えて、デフォルトではユーザIDと実効ユーザIDの両方が0であるプロセスだけがポリシーを変更できますが、 非 root ユーザによるポリシーの変更を認めたい場合には /proc/ccs/manager に対して</p>  <p>上記の制約に加えて、デフォルトではユーザIDと実効ユーザIDの両方が0であるプロセスだけがポリシを変更できますが、 非 root ユーザによるポリシの変更を認めたい場合には /proc/ccs/manager に対して</p>
321    
322  <table border="1">  <table border="1">
323  <tr><td>  <tr><td>
324  # echo manage_by_non_root | loadpolicy -m  # echo manage_by_non_root | /usr/lib/ccs/loadpolicy -m
325  </td></tr>  </td></tr>
326  </table>  </table>
327    
# Line 329  Total:          119794 Line 329  Total:          119794
329    
330  <table border="1">  <table border="1">
331  <tr><td>  <tr><td>
332  # echo delete manage_by_non_root | loadpolicy -m  # echo delete manage_by_non_root | /usr/lib/ccs/loadpolicy -m
333    </td></tr>
334    </table>
335    
336    <p>のように delete manage_by_non_root というキーワードを書き込んでください。 /proc/ccs/ 以下のエントリの所有者は root なので、非 root ユーザによるアクセスを認めるためには必要に応じて chown/chmod を実行してください。<br>
337    起動時に自動的にこの処理が行われるようにするために、 /sbin/ccs-init は /etc/ccs/ccs-post-init というプログラムが存在する場合には /etc/ccs/ccs-post-init も実行するようになっています。よって、例えば demo ユーザが /proc/ccs/ インタフェースへの読み書きができるように設定したい場合は、</p>
338    
339    <table border="1">
340    <tr><td>
341    #! /bin/sh<br>
342    echo manage_by_non_root &gt; /proc/ccs/manager<br>
343    chown -R demo /proc/ccs/
344  </td></tr>  </td></tr>
345  </table>  </table>
346    
347  <p>のように delete manage_by_non_root というキーワードを書き込んでください。 /proc/ccs/ 以下のエントリの所有者は root なので、非 root ユーザによるアクセスを認めるためには必要に応じて chown/chmod を実行してください。</p>  <p>という内容で /etc/ccs/ccs-post-init を作成し、</p>
348    
349    <table border="1">
350    <tr><td>
351    # chmod 755 /etc/ccs/ccs-post-init<br>
352    # chown -R demo /etc/ccs/<br>
353    # chmod 755 /usr/lib/ccs/
354    </td></tr>
355    </table>
356    
357    <p>を実行することで demo ユーザがポリシのあるディレクトリへのアクセスとポリシを編集するためのプログラムを実行できるようになります。</p>
358    
359  <p>なお、学習モード用のプロファイルが割り当てられているプロセスは、アクセスを要求するだけで<a href="#system_policy">/proc/ccs/system_policy</a>または<a href="#domain_policy">/proc/ccs/domain_policy</a>へと自動的にアクセス許可が追加されていきます。</p>  <p>なお、学習モード用のプロファイルが割り当てられているプロセスは、アクセスを要求するだけで<a href="#system_policy">/proc/ccs/system_policy</a>または<a href="#domain_policy">/proc/ccs/domain_policy</a>へと自動的にアクセス許可が追加されていきます。</p>
360    
# Line 341  Total:          119794 Line 362  Total:          119794
362    
363  <h2><a name="domain_definition">4.1 ドメインとは</a></h2>  <h2><a name="domain_definition">4.1 ドメインとは</a></h2>
364    
365  <p>TOMOYO Linux においては、全てのプロセスがそれぞれ1つのドメインに属し、全てのプログラムがそれぞれ異なるドメインに属する。現在実行されている2つのプロセスが同一のプログラムであっても、それぞれのプロセスの直前のドメインが異なっていれば異なるドメインに属する。</p>  <p>TOMOYO Linux においては、システム全体でアクセス許可を定義するものと、ドメイン単位でアクセス許可を定義するものの2種類があります。前者はシステムポリシと呼ばれ、<a href="#system_policy">/proc/ccs/system_policy</a>を通じてアクセス許可を指定します。後者はドメインポリシと呼ばれ、<a href="#domain_policy">/proc/ccs/domain_policy</a> を通じてアクセス許可を定義します。</p>
366    
367  <p>全てのドメインはカーネルが属するドメイン「&lt;kernel&gt;」を基点として定義される。 /sbin/init はカーネルの属するドメインから起動されるので、 /sbin/init のドメインは「&lt;kernel&gt; /sbin/init」と定義される。 /etc/rc.d/rc はカーネルから起動された /sbin/init の属するドメインから起動されるので、 /etc/rc.d/rc のドメインは「&lt;kernel&gt; /sbin/init /etc/rc.d/rc」と定義される。</p>  <p>TOMOYO Linux においては、全てのプロセスがそれぞれ1つのドメインに属し、全てのプログラムがそれぞれ異なるドメインに属します。現在実行されている2つのプロセスが同一のプログラムであっても、それぞれのプロセスの直前のドメインが異なっていれば異なるドメインに属します。</p>
368    
369    <p>全てのドメインはカーネルが属するドメイン「&lt;kernel&gt;」を基点として定義されます。 /sbin/init はカーネルの属するドメインから起動されるので、 /sbin/init のドメインは「&lt;kernel&gt; /sbin/init」と定義されます。 /etc/rc.d/rc はカーネルから起動された /sbin/init の属するドメインから起動されるので、 /etc/rc.d/rc のドメインは「&lt;kernel&gt; /sbin/init /etc/rc.d/rc」と定義されます。</p>
370    
371  <h2><a name="domain_transition">4.2 ドメイン遷移とは</a></h2>  <h2><a name="domain_transition">4.2 ドメイン遷移とは</a></h2>
372    
373  <p>実行時のプログラムの名前により異なる動作をするプログラムが存在する。例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクである。 TOMOYO Linux は正規化したパス名を使用するので、 /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。</p>  <p>実行時のプログラムの名前により異なる動作をするプログラムが存在します。例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクです。 TOMOYO Linux は正規化したパス名を使用するので、 /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義されます。</p>
374    
375  <p>プロセスがプログラムを実行しようとすると、以下の処理が行われる。</p>  <p>プロセスがプログラムを実行しようとすると、以下の処理が行われます。</p>
376    
377  <table border="1">  <table border="1">
378  <tr><td>Step</td><td>内容</td></tr>  <tr><td>Step</td><td>内容</td></tr>
379  <tr><td>プログラム名の取得</td><td>  <tr><td>プログラム名の取得</td><td>
380  <p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補1」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決したパス名を取得する。</p>  <p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補1」とします。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決したパス名を取得します。</p>
381  <p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補2」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決する前のパス名を取得する。</p>  <p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補2」とします。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決する前のパス名を取得します。</p>
382  </td></tr>  </td></tr>
383  <tr><td>シンボリックリンクの識別</td><td>  <tr><td>シンボリックリンクの識別</td><td>
384  <p>「パス名候補1」と「パス名候補2」が一致しない場合、例外ポリシーから</p>  <p>「パス名候補1」と「パス名候補2」が一致しない場合、例外ポリシから</p>
385    
386  <ul>  <ul>
387  <li>alias 「パス名候補1」 「パス名候補2」  <li>alias 「パス名候補1」 「パス名候補2」
388  </ul>  </ul>
389    
390  <p>というエントリを探す。見つかった場合は「パス名候補2」を「パス名候補1」とする。</p>  <p>というエントリを探します。見つかった場合は「パス名候補2」を「パス名候補1」とします。</p>
391  </td></tr>  </td></tr>
392  <tr><td><a name="exec_stage_check_argv0">argv[0] のチェック</a></td><td>  <tr><td><a name="exec_stage_check_argv0">argv[0] のチェック</a></td><td>
393  <p>「パス名候補1」の最後の / 以降の部分と argv[0] の最後の / 以降の部分が異なっている場合、ドメイン別ポリシーから</p>  <p>「パス名候補1」の最後の / 以降の部分と argv[0] の最後の / 以降の部分が異なっている場合、ドメインポリシから</p>
394    
395  <ul>  <ul>
396  <li>allow_argv0 「パス名候補1」 「argv[0]の最後の / 以降の部分」  <li>allow_argv0 「パス名候補1」 「argv[0]の最後の / 以降の部分」
397  </ul>  </ul>
398    
399  <p>というエントリを探す。見つからなければ拒否する。</p>  <p>というエントリを探します。見つからなければプログラムの実行要求は拒否されます。</p>
400  </td></tr>  </td></tr>
401  <tr><td>類似するプログラムの集約</td><td>  <tr><td>類似するプログラムの集約</td><td>
402  <p>例外ポリシーから</p>  <p>例外ポリシから</p>
403    
404  <ul>  <ul>
405  <li>aggregator 「パス名候補1」 「集約されたパス名」  <li>aggregator 「パス名候補1」 「集約されたパス名」
406  </ul>  </ul>
407    
408  <p>というエントリを探す。見つかった場合は、「集約されたパス名」を「パス名候補1」とする。</p>  <p>というエントリを探します。見つかった場合は、「集約されたパス名」を「パス名候補1」とします。</p>
409  </td></tr>  </td></tr>
410  <tr><td><a name="exec_stage_check_execute">権限のチェック</a></td><td>  <tr><td><a name="exec_stage_check_execute">権限のチェック</a></td><td>
411  <p>ドメイン別ポリシーから</p>  <p>ドメインポリシから</p>
412    
413  <ul>  <ul>
414  <li>allow_execute 「パス名候補1」  <li>allow_execute 「パス名候補1」
415  <li>allow_execute @「パス名候補1」を含むグループ名  <li>allow_execute @「パス名候補1」を含むグループ名
416  </ul>  </ul>
417    
418  <p>というエントリを探す。見つからなければ拒否する。</p>  <p>というエントリを探します。見つからなければプログラムの実行要求は拒否されます。</p>
419  </td></tr>  </td></tr>
420  <tr><td><a name="exec_stage_check_destination">遷移先の決定</a></td><td>  <tr><td><a name="exec_stage_check_destination">遷移先の決定</a></td><td>
421    
422  <p>(1) 例外ポリシーから</p>  <p>(1) 例外ポリシから</p>
423    
424  <ul>  <ul>
425  <li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 404  Total:          119794 Line 427  Total:          119794
427  <li>no_initialize_domain 「パス名候補1」  <li>no_initialize_domain 「パス名候補1」
428  </ul>  </ul>
429    
430  <p>というエントリを探す。見つかった場合は (3) へ進む。</p>  <p>というエントリを探します。見つかった場合は (3) へ進みます。</p>
431    
432  <p>(2) 例外ポリシーから</p>  <p>(2) 例外ポリシから</p>
433    
434  <ul>  <ul>
435  <li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 414  Total:          119794 Line 437  Total:          119794
437  <li>initialize_domain 「パス名候補1」  <li>initialize_domain 「パス名候補1」
438  </ul>  </ul>
439    
440  <p>というエントリを探す。見つかった場合は「カーネルが属しているドメインのドメイン名(&lt;kernel&gt;)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進む。</p>  <p>というエントリを探します。見つかった場合は「カーネルが属しているドメインのドメイン名(&lt;kernel&gt;)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進みます。</p>
441    
442  <p>(3) 例外ポリシーから</p>  <p>(3) 例外ポリシから</p>
443    
444  <ul>  <ul>
445  <li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 425  Total:          119794 Line 448  Total:          119794
448  <li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素  <li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素
449  </ul>  </ul>
450    
451  <p>というエントリを探す。見つかった場合は (5) へ進む。</p>  <p>というエントリを探します。見つかった場合は (5) へ進みます。</p>
452    
453  <p>(4) 例外ポリシーから</p>  <p>(4) 例外ポリシから</p>
454    
455  <ul>  <ul>
456  <li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 436  Total:          119794 Line 459  Total:          119794
459  <li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素  <li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素
460  </ul>  </ul>
461    
462  <p>というエントリを探す。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進む。</p>  <p>というエントリを探します。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進みます。</p>
463    
464  <p>(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進む。</p>  <p>(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進みます。</p>
465    
466  <p>(6) ドメイン別ポリシーから「遷移先ドメイン」を探す。見つからなければ拒否する。</p>  <p>(6) ドメインポリシから「遷移先ドメイン」を探します。見つからなければプログラムの実行要求は拒否されます。</p>
467    
468  </td></tr>  </td></tr>
469  <tr><td>環境変数のチェック</td><td>  <tr><td>環境変数のチェック</td><td>
470    
471  <p>(1)全ての環境変数名が「遷移先ドメイン」で許可されているかどうかを検査し、許可されていないものが見つかった場合は拒否する。</p>  <p>(1)全ての環境変数名が「遷移先ドメイン」で許可されているかどうかを検査します。1つでも許可されていないものが見つかった場合は、プログラムの実行要求は拒否されます。</p>
472    
473  <p>(2)通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移する。</p>  <p>(2)通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移します。</p>
474  </td></tr>  </td></tr>
475  </table>  </table>
476    
477  <p>ただし、</p>  <p>ただし、例外として</p>
478    
479  <ul>  <ul>
480  <li>上記手順の「<a href="#exec_stage_check_argv0">argv[0] のチェック</a>」「<a href="#exec_stage_check_execute">権限のチェック</a>」「<a href="#exec_stage_check_destination">遷移先の決定</a>」の何れかに於いて拒否されたが、プログラムの実行を要求したプロセスの属しているドメインに <a href="#domain_policy_denied_execute_handler">denied_execute_handler</a>キーワードが指定されている</li>  <li>上記手順の「<a href="#exec_stage_check_argv0">argv[0] のチェック</a>」「<a href="#exec_stage_check_execute">権限のチェック</a>」「<a href="#exec_stage_check_destination">遷移先の決定</a>」の何れかに於いて拒否されたが、プログラムの実行を要求したプロセスの属しているドメインに <a href="#domain_policy_denied_execute_handler">denied_execute_handler</a>キーワードが指定されている</li>
# Line 460  Total:          119794 Line 483  Total:          119794
483    
484  <p>のどちらかに該当し、かつ、</p>  <p>のどちらかに該当し、かつ、</p>
485    
   
486  <ul>  <ul>
487  <li>プログラムの実行を要求したプロセスが <a href="#domain_policy_execute_handler">execute_handler</a> キーワードまたは <a href="#domain_policy_denied_execute_handler">denied_execute_handler</a> キーワードにより起動されたプロセスではない</li>  <li>プログラムの実行を要求したプロセスが <a href="#domain_policy_execute_handler">execute_handler</a> キーワードまたは <a href="#domain_policy_denied_execute_handler">denied_execute_handler</a> キーワードにより起動されたプロセスではない</li>
488  </ul>  </ul>
489    
490  <p>場合には、以下の手順を実行します。</p>  <p>場合には、以下の手順を実行します。この例外の使い方については「<a href="#execute_handler">プログラムの実行可否をカーネルの外部で判断</a>」と「<a href="#denied_execute_handler">許可されていないプログラムの実行が要求された場合の代替処理指定</a>」で説明します。</p>
491    
492  <table border="1">  <table border="1">
493  <tr><td>Step</td><td>内容</td></tr>  <tr><td>Step</td><td>内容</td></tr>
494  <tr><td>プログラム名の取得</td><td>  <tr><td>プログラム名の取得</td><td>
495  <p><a href="#domain_policy_denied_execute_handler">denied_execute_handler</a> または <a href="#domain_policy_execute_handler">execute_handler</a>で指定されているプログラムのパス名を取得し、「パス名候補1」とする。</p>  <p><a href="#domain_policy_denied_execute_handler">denied_execute_handler</a> または <a href="#domain_policy_execute_handler">execute_handler</a>で指定されているプログラムのパス名を取得し、「パス名候補1」とします。</p>
496  </td></tr>  </td></tr>
497  <tr><td>情報の追加</td><td>  <tr><td>情報の追加</td><td>
498  <p>全ての環境変数を引数の末尾に追加し、全ての環境変数を削除する。</p>  <p>全ての環境変数を引数の末尾に追加し、全ての環境変数を削除します。</p>
499  <p>「パス名候補1」「プログラムの実行を要求したプロセスの属しているドメインのドメイン名」「プログラムの実行を要求したプロセスのパス名」「プログラムの実行を要求したプロセスの状態」「実行が要求されたプログラムのパス名」「引数の数」「環境変数の数」を引数の先頭に挿入する。</p>  <p>「パス名候補1」「プログラムの実行を要求したプロセスの属しているドメインのドメイン名」「プログラムの実行を要求したプロセスのパス名」「プログラムの実行を要求したプロセスの状態」「実行が要求されたプログラムのパス名」「引数の数」「環境変数の数」を引数の先頭に挿入します。</p>
500  </td></tr>  </td></tr>
501  <tr><td>遷移先の決定</td><td>  <tr><td>遷移先の決定</td><td>
502    
503  <p>(1) 例外ポリシーから</p>  <p>(1) 例外ポリシから</p>
504    
505  <ul>  <ul>
506  <li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 486  Total:          119794 Line 508  Total:          119794
508  <li>no_initialize_domain 「パス名候補1」  <li>no_initialize_domain 「パス名候補1」
509  </ul>  </ul>
510    
511  <p>というエントリを探す。見つかった場合は (3) へ進む。</p>  <p>というエントリを探します。見つかった場合は (3) へ進みます。</p>
512    
513  <p>(2) 例外ポリシーから</p>  <p>(2) 例外ポリシから</p>
514    
515  <ul>  <ul>
516  <li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 496  Total:          119794 Line 518  Total:          119794
518  <li>initialize_domain 「パス名候補1」  <li>initialize_domain 「パス名候補1」
519  </ul>  </ul>
520    
521  <p>というエントリを探す。見つかった場合は「カーネルが属しているドメインのドメイン名(&lt;kernel&gt;)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進む。</p>  <p>というエントリを探します。見つかった場合は「カーネルが属しているドメインのドメイン名(&lt;kernel&gt;)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進みます。</p>
522    
523  <p>(3) 例外ポリシーから</p>  <p>(3) 例外ポリシから</p>
524    
525  <ul>  <ul>
526  <li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 507  Total:          119794 Line 529  Total:          119794
529  <li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素  <li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素
530  </ul>  </ul>
531    
532  <p>というエントリを探す。見つかった場合は (5) へ進む。</p>  <p>というエントリを探します。見つかった場合は (5) へ進みます。</p>
533    
534  <p>(4) 例外ポリシーから</p>  <p>(4) 例外ポリシから</p>
535    
536  <ul>  <ul>
537  <li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」  <li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」
# Line 518  Total:          119794 Line 540  Total:          119794
540  <li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素  <li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素
541  </ul>  </ul>
542    
543  <p>というエントリを探す。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進む。</p>  <p>というエントリを探します。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進みます。</p>
544    
545  <p>(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進む。</p>  <p>(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進みます。</p>
546    
547  <p>(6) ドメイン別ポリシーから「遷移先ドメイン」を探す。見つからなければ拒否する。</p>  <p>(6) ドメインポリシから「遷移先ドメイン」を探します。見つからなければプログラムの実行要求は拒否されます。</p>
548    
549  </td></tr>  </td></tr>
550  <tr><td>プログラムの実行</td><td>  <tr><td>プログラムの実行</td><td>
551    
552  <p>通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移する。</p>  <p>通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移します。</p>
553    
554  </td></tr>  </td></tr>
555  </table>  </table>
556    
   
557  <h2><a name="access_logs">4.3 アクセスログについて</a></h2>  <h2><a name="access_logs">4.3 アクセスログについて</a></h2>
558    
559  <hr>  <p>ドメインポリシによって許可されたアクセス要求のログと拒否されたアクセス要求のログを生成します。前者は許可ログと呼ばれ、 /proc/ccs/grant_log から取得することができます。後者は拒否ログと呼ばれ、 /proc/ccs/reject_log から取得することができます。これらのログを取得してファイルとして保存するためのツールとして /usr/lib/ccs/ccs-auditd というプログラムが付属しています。</p>
560    
561    <p>以下に例を示します。最初の例はプログラムを実行しようとしたときのログです。</p>
562    
 <h2><a name="word_definition">1.1 用語の定義</a></h2>  
563  <table border="1">  <table border="1">
564  <tr>  <tr><td>
565  <td>正規化されたパス名</td>  #2008-04-09 12:50:15# profile=1 mode=learning pid=5054 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 argc=2 envc=16 argv[]={ "cat" "/etc/fstab" } envp[]={ "TERM=vt100" "SHELL=/bin/bash" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "MAIL=/var/mail/root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "PWD=/root" "LANG=C" "PS1=\\h:\\w\\$\040" "SHLVL=1" "HOME=/root" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" "_=/bin/cat" }<br>
566  <td>"/" で始まり、シンボリックリンクや "/./" や "//" や "/../" を含まないパス名。(ただし、現在のプロセスに関する情報にアクセスするための "/proc/self/" ディレクトリに関してはそのまま "/proc/self/" とする。)<br>  &lt;kernel&gt; /usr/sbin/sshd /bin/bash<br>
567  プロセスが chroot された環境下で動作する場合であっても、 chroot する前のパス名で指定される。<br>  allow_execute /bin/cat
568  正規化されたパス名は、全てアスキーコードの表示可能な範囲(0x21〜0x7E)で構成されている。 従って、\ 文字(0x5C)は \\ 、その他の表示不可能な文字(0x01〜0x20、0x7F〜0xFF)は \ooo 形式の8進数で表記する。 (例えば、空白文字(0x20)は \040 と表記する。)</td>  </td></tr>
 </tr>  
 <tr>  
 <td>正規化されたディレクトリ名</td>  
 <td>正規化されたパス名の内、"/"で終わるもの。</td>  
 </tr>  
 <tr>  
 <td>正規化されたファイル名</td>  
 <td>正規化されたパス名の内、"/"で終わらないもの。<br>  
 正規化されたファイル名は、ディレクトリ以外の全てのファイルタイプ(通常ファイル、キャラクタ型デバイスファイル、ブロック型デバイスファイル、FIFO、シンボリックリンク、ソケット)を含む。</td>  
 </tr>  
 <tr>  
 <td>プログラム</td>  
 <td>正規化されたファイル名の内、実行可能なもの。</td>  
 </tr>  
 <tr>  
 <td>ドメイン</td>  
 <td>MAC(強制アクセス制御)を行うための属性</td>  
 </tr>  
 <tr>  
 <td>遷移先ドメイン</td>  
 <td>プログラムが正常に開始された場合にプロセスが遷移するドメイン</td>  
 </tr>  
 <tr>  
 <td>操作対象ドメイン</td>  
 <td>操作対象となるプロセスの属しているドメイン</td>  
 </tr>  
569  </table>  </table>
570    
571  <hr>  <p>このログは、 &lt;kernel&gt; /usr/sbin/sshd /bin/bash というドメインに属しているプロセスが /bin/cat というプログラムを実行しようとし、そのときの引数の内容は "cat" "/etc/fstab" 、環境変数の内容は "TERM=vt100" "SHELL=/bin/bash" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "MAIL=/var/mail/root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "PWD=/root" "LANG=C" "PS1=\\h:\\w\\$\040" "SHLVL=1" "HOME=/root" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" "_=/bin/cat" であったということを示しています。また、プロセスIDやユーザIDなど、プロセスに関する情報も一緒に出力されます。</p>
 <h1><a name="policy_files_and_syntaxes">2. ポリシーファイルの分類と構文</a></h1>  
 <p>ポリシーファイルは全て /etc/ccs/ ディレクトリに作成しておく。このディレクトリに存在するファイルが /sbin/init の開始時に /sbin/ccs-init によって読み込まれるようになっている。</p>  
 <h2><a name="manager.conf">2.1 ポリシーマネージャ定義(manager.conf)</a></h2>  
 <p>全てのプログラムがポリシーの変更を行えるのは危険であるため、このファイルには /proc/ccs/ インタフェースへの書き込みアクセスを許可するプログラムまたはドメインを定義しておく。</p>  
 <p>このファイルに定義されていないプログラムやドメインからは /proc/ccs/ インタフェースへの書き込みアクセスができない。システム運用時にポリシーの変更を許可しない場合はこのファイルを削除しておく。</p>  
 <p>(例)<br>  
 /usr/lib/ccs/loadpolicy<br>  
 /usr/lib/ccs/editpolicy<br>  
 /usr/lib/ccs/setlevel<br>  
 /usr/lib/ccs/setprofile<br>  
 /usr/lib/ccs/ld-watch<br>  
 /usr/lib/ccs/ccs-queryd<br>  
 &lt;kernel&gt; /sbin/mingetty /usr/lib/bin/bash  
 </p>  
572    
573  <hr>  <p>次の例は、ファイルを読み込みモードでオープンしようとしたときのログです。</p>
574    
575    <table border="1">
576    <tr><td>
577    #2008-04-09 12:50:15# profile=1 mode=learning pid=5054 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0<br>
578    &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/cat<br>
579    allow_read /etc/fstab
580    </td></tr>
581    </table>
582    
583    <p>このログは、 &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/cat というドメインに属しているプロセスが /etc/fstab というファイルをオープンしようとしたことを示しています。</p>
584    
585    <p>次の例は、ドメインが新規作成されたときのログです。</p>
586    
587    <table border="1">
588    <tr><td>
589    #2008-04-09 12:52:01# profile=1 mode=learning pid=5110 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0<br>
590    &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/bash /bin/audit-exec-param /bin/cat<br>
591    use_profile 1
592    </td></tr>
593    </table>
594    
595    <p>このログは、 &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/bash /bin/audit-exec-param /bin/cat というドメインが新規作成され、プロファイルとして 1 が割り当てられたことを示しています。 TOMOYO Linux では、ドメインが自動的に新規作成されていきます。自動的に新規作成された場合には、ドメインを新規作成することになったプロセスの属しているドメインに割り当てられていたプロファイル番号が引き継がれます。</p>
596    
597    <p>次の例は、<a href="#execute_handler">プログラムの実行可否をカーネルの外部で判断</a>するために要求されたのとは異なるプログラムが実行されたときのログです。</p>
598    <table border="1">
599    <tr><td>
600    #2008-04-09 12:52:01# profile=1 mode=learning pid=5110 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 argc=24 envc=0 argv[]={ "/bin/audit-exec-param" "&lt;kernel&gt;\040/usr/sbin/sshd\040/bin/bash\040/bin/bash" "/bin/bash" "pid=5110\040uid=0\040gid=0\040euid=0\040egid=0\040suid=0\040sgid=0\040fsuid=0\040fsgid=0\040state[0]=0\040state[1]=0\040state[2]=0" "/bin/cat" "2" "18" "cat" "/etc/fstab" "SHELL=/bin/bash" "TERM=vt100" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "MAIL=/var/mail/root" "_=/bin/cat" "PWD=/root" "LANG=C" "HOME=/root" "SHLVL=2" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" } envp[]={ }<br>
601    &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/bash<br>
602    execute_handler /bin/audit-exec-param
603    </td></tr>
604    </table>
605    
606    <p>このログは、 &lt;kernel&gt; /usr/sbin/sshd /bin/bash /bin/bash というドメインに属しているプロセスがプログラムを実行しようとしたが、 execute_handler が指定されていたので代わりに /bin/audit-exec-param というプログラムが実行されたこと、 /bin/audit-exec-param に渡された引数の内容は "/bin/audit-exec-param" "&lt;kernel&gt;\040/usr/sbin/sshd\040/bin/bash\040/bin/bash" "/bin/bash" "pid=5110\040uid=0\040gid=0\040euid=0\040egid=0\040suid=0\040sgid=0\040fsuid=0\040fsgid=0\040state[0]=0\040state[1]=0\040state[2]=0" "/bin/cat" "2" "18" "cat" "/etc/fstab" "SHELL=/bin/bash" "TERM=vt100" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "MAIL=/var/mail/root" "_=/bin/cat" "PWD=/root" "LANG=C" "HOME=/root" "SHLVL=2" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" であったということを示しています。 LD_PRELOAD などの環境変数によって  /bin/audit-exec-param の動作が左右されるのを防ぐため、環境変数を引数に移動しています。</p>
607    
608    <p>このように、アクセスログは3行で1件( /usr/lib/ccs/ccs-auditd によってファイルに保存されるときに空行が入るので4行で1件)となっており、これらのログはそのままドメインポリシとして追加可能な形式になっています。アクセス拒否ログから許可したい部分を抽出して、例えば /var/log/tomoyo/diff.txt という名前で保存した後、</p>
609    
610    <table border="1">
611    <tr><td>
612    # /usr/lib/ccs/loadpolicy -d &lt; /var/log/tomoyo/diff.txt
613    </td></tr>
614    </table>
615    
616    <p>という操作を行うことで、ドメインポリシに追加することができます。そのため、「学習モード」を使わなくても、最初から「許容モード」を使って拒否ログを出力させ、拒否ログの内容を編集するというアプローチでもドメインポリシを定義していくことができます。「学習モード」でドメインポリシを作成する場合にはプロセスの状態(アクセスログの先頭行の内容)は加味されませんが、アクセス拒否ログからドメインポリシを生成すると、最初から<a href="#conditional_acl">条件付きアクセス許可の指定</a>を行うことができます。例えば、「学習モード」を使わずにログを生成し、</p>
617    
618    <table border="1">
619    <tr><td>
620    &lt;kernel&gt; /usr/sbin/sshd /bin/bash<br>
621    allow_execute /bin/cat if exec.argc=2 exec.argv[0]="cat" exec.argv[1]="/etc/fstab"
622    </td></tr>
623    </table>
624    
625    <p>としてドメインポリシを追加した場合、「学習モード」で追加される</p>
626    
627    <table border="1">
628    <tr><td>
629    &lt;kernel&gt; /usr/sbin/sshd /bin/bash<br>
630    allow_execute /bin/cat
631    </td></tr>
632    </table>
633    
634    <p>よりも細かい指定を行うことができるようになります。</p>
635    
636  <h1><a name="details">詳細</a></h1>  <h1><a name="Syntax_Details">5. キーワード詳細</a></h1>
637    
638  <h2><a name="profile">/proc/ccs/profile</a></h2>  <h2><a name="profile">/proc/ccs/profile</a></h2>
639    
640  <p>TOMOYO Linuxでは、ファイル以外にもいくつかの項目について強制アクセス制御を行うことができるが、ポリシー管理の負担を減らすために、必要の無い機能を無効化できるようになっている。</p>  <p>TOMOYO Linuxでは、ファイル以外にもいくつかの項目について強制アクセス制御を行うことができますが、ポリシ管理の負担を減らすために、必要の無い機能を無効化できるようになっています。</p>
641    
642  <p>有効にしたい機能とそのモードを「プロファイル番号-項目=値」という形式で定義する。プロファイル番号は 0 〜 255 が指定可能である。プロファイルの内容を変更するには setlevel コマンドまたは loadpolicy コマンドを使用する。</p>  <p>有効にしたい機能とそのモードを「プロファイル番号-項目=値」という形式で定義します。プロファイル番号は 0 〜 255 が指定可能です。プロファイルの内容を変更するには setlevel コマンドまたは loadpolicy コマンドを使用します。</p>
643    
644  <p>各ドメインには1個のプロファイルが割り当てられる。ドメインにプロファイルを割り当てるには setprofile コマンドまたは editpolicy コマンドまたは loadpolicy コマンドを使用する。</p>  <p>各ドメインには1個のプロファイルが割り当てられます。ドメインにプロファイルを割り当てるには setprofile コマンドまたは editpolicy コマンドまたは loadpolicy コマンドを使用します。</p>
645    
646  <p>現在ドメインに割り当てられているプロファイル番号は editpolicy コマンドで確認できる。<br>  <p>現在ドメインに割り当てられているプロファイル番号は editpolicy コマンドで確認できます。<br>
647  現在動作中のプロセスに割り当てられているプロファイル番号は ccstree コマンドで確認できる。<br>  現在動作中のプロセスに割り当てられているプロファイル番号は ccstree コマンドで確認できます。<br>
648  現在のポリシーを savepolicy コマンドで保存した場合、<a href="#domain_policy_use_profile">use_profile</a>というキーワードに保持される。</p>  現在のポリシを savepolicy コマンドで保存した場合、<a href="#domain_policy_use_profile">use_profile</a>というキーワードに保持されます。</p>
649    
650  <h3><a name="profile_MAC_FOR_FILE">MAC_FOR_FILE</a></h3>  <h3><a name="profile_MAC_FOR_FILE">MAC_FOR_FILE</a></h3>
651    
652  <p>ファイルに対する強制アクセス制御のレベルを指定する。</p>  <p>ファイルに対する強制アクセス制御のレベルを指定します。</p>
653    
654  <table border="1">  <table border="1">
655  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
656  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
657  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
658  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。
659  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  ポリシへの自動追加も行いません。</td></tr>
660    <tr><td>enforcing</td><td>強制モード。ポリシに違反したらエラーとします。</td></tr>
661  </table>  </table>
662    
663  <h3><a name="profile_MAC_FOR_ARGV0">MAC_FOR_ARGV0</a></h3>  <h3><a name="profile_MAC_FOR_ARGV0">MAC_FOR_ARGV0</a></h3>
664    
665  <p>プログラム実行時の argv[0] に対する強制アクセス制御のレベルを指定する。</p>  <p>プログラム実行時の argv[0] に対する強制アクセス制御のレベルを指定します。</p>
666    
667  <table border="1">  <table border="1">
668  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
669  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
670  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
671  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
672  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
673  </table>  </table>
674    
675  <h3><a name="profile_MAC_FOR_ENV">MAC_FOR_ENV</a></h3>  <h3><a name="profile_MAC_FOR_ENV">MAC_FOR_ENV</a></h3>
676    
677  <p>プログラム実行時の環境変数名に対する強制アクセス制御のレベルを指定する。</p>  <p>プログラム実行時の環境変数名に対する強制アクセス制御のレベルを指定します。</p>
678    
679  <table border="1">  <table border="1">
680  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
681  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
682  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
683  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
684  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
685  </table>  </table>
686    
687  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_create">MAC_FOR_CAPABILITY::inet_tcp_create</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_create">MAC_FOR_CAPABILITY::inet_tcp_create</a></h3>
688    
689  <p>TCP ソケットの使用に対する強制アクセス制御のレベルを指定する。</p>  <p>TCP ソケットの使用に対する強制アクセス制御のレベルを指定します。</p>
690    
691  <table border="1">  <table border="1">
692  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
693  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
694  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
695  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
696  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
697  </table>  </table>
698    
699  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_listen">MAC_FOR_CAPABILITY::inet_tcp_listen</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_listen">MAC_FOR_CAPABILITY::inet_tcp_listen</a></h3>
700    
701  <p>TCP ソケットの listenに対する強制アクセス制御のレベルを指定する。</p>  <p>TCP ソケットの listenに対する強制アクセス制御のレベルを指定します。</p>
702    
703  <table border="1">  <table border="1">
704  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
705  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
706  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
707  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
708  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
709  </table>  </table>
710    
711  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_connect">MAC_FOR_CAPABILITY::inet_tcp_connect</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_connect">MAC_FOR_CAPABILITY::inet_tcp_connect</a></h3>
712    
713  <p>TCP ソケットの connectに対する強制アクセス制御のレベルを指定する。</p>  <p>TCP ソケットの connectに対する強制アクセス制御のレベルを指定します。</p>
714    
715  <table border="1">  <table border="1">
716  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
717  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
718  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
719  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
720  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
721  </table>  </table>
722    
723  <h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_udp">MAC_FOR_CAPABILITY::use_inet_udp</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_udp">MAC_FOR_CAPABILITY::use_inet_udp</a></h3>
724    
725  <p>UDP ソケットの使用に対する強制アクセス制御のレベルを指定する。</p>  <p>UDP ソケットの使用に対する強制アクセス制御のレベルを指定します。</p>
726    
727  <table border="1">  <table border="1">
728  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
729  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
730  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
731  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
732  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
733  </table>  </table>
734    
735  <h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_ip">MAC_FOR_CAPABILITY::use_inet_ip</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_ip">MAC_FOR_CAPABILITY::use_inet_ip</a></h3>
736    
737  <p>RAW ソケットの使用に対する強制アクセス制御のレベルを指定する。</p>  <p>RAW ソケットの使用に対する強制アクセス制御のレベルを指定します。</p>
738    
739  <table border="1">  <table border="1">
740  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
741  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
742  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
743  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
744  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
745  </table>  </table>
746    
747  <h3><a name="profile_MAC_FOR_CAPABILITY::use_route">MAC_FOR_CAPABILITY::use_route</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::use_route">MAC_FOR_CAPABILITY::use_route</a></h3>
748    
749  <p>ROUTE ソケットの使用に対する強制アクセス制御のレベルを指定する。</p>  <p>ROUTE ソケットの使用に対する強制アクセス制御のレベルを指定します。</p>
750    
751  <table border="1">  <table border="1">
752  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
753  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
754  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
755  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
756  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
757  </table>  </table>
758    
759  <h3><a name="profile_MAC_FOR_CAPABILITY::use_packet">MAC_FOR_CAPABILITY::use_packet</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::use_packet">MAC_FOR_CAPABILITY::use_packet</a></h3>
760    
761  <p>PACKET ソケットの使用に対する強制アクセス制御のレベルを指定する。</p>  <p>PACKET ソケットの使用に対する強制アクセス制御のレベルを指定します。</p>
762    
763  <table border="1">  <table border="1">
764  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
765  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
766  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
767  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
768  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
769  </table>  </table>
770    
771  <h3><a name="profile_MAC_FOR_CAPABILITY::use_kernel_module">MAC_FOR_CAPABILITY::use_kernel_module</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::use_kernel_module">MAC_FOR_CAPABILITY::use_kernel_module</a></h3>
772    
773  <p>create_module(2) init_module(2) delete_module(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>create_module(2) init_module(2) delete_module(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
774    
775  <table border="1">  <table border="1">
776  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
777  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
778  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
779  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
780  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
781  </table>  </table>
782    
783  <h3><a name="profile_MAC_FOR_CAPABILITY::create_fifo">MAC_FOR_CAPABILITY::create_fifo</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::create_fifo">MAC_FOR_CAPABILITY::create_fifo</a></h3>
784    
785  <p>mknod(2) で FIFO の作成に対する強制アクセス制御のレベルを指定する。</p>  <p>mknod(2) で FIFO の作成に対する強制アクセス制御のレベルを指定します。</p>
786    
787  <table border="1">  <table border="1">
788  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
789  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
790  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
791  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
792  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
793  </table>  </table>
794    
795  <h3><a name="profile_MAC_FOR_CAPABILITY::create_block_dev">MAC_FOR_CAPABILITY::create_block_dev</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::create_block_dev">MAC_FOR_CAPABILITY::create_block_dev</a></h3>
796    
797  <p>mknod(2) でブロック型デバイスの作成に対する強制アクセス制御のレベルを指定する。</p>  <p>mknod(2) でブロック型デバイスの作成に対する強制アクセス制御のレベルを指定します。</p>
798    
799  <table border="1">  <table border="1">
800  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
801  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
802  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
803  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
804  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
805  </table>  </table>
806    
807  <h3><a name="profile_MAC_FOR_CAPABILITY::create_char_dev">MAC_FOR_CAPABILITY::create_char_dev</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::create_char_dev">MAC_FOR_CAPABILITY::create_char_dev</a></h3>
808    
809  <p>mknod(2) でキャラクタ型デバイスの作成に対する強制アクセス制御のレベルを指定する。</p>  <p>mknod(2) でキャラクタ型デバイスの作成に対する強制アクセス制御のレベルを指定します。</p>
810    
811  <table border="1">  <table border="1">
812  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
813  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
814  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
815  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
816  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
817  </table>  </table>
818    
819  <h3><a name="profile_MAC_FOR_CAPABILITY::create_unix_socket">MAC_FOR_CAPABILITY::create_unix_socket</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::create_unix_socket">MAC_FOR_CAPABILITY::create_unix_socket</a></h3>
820    
821  <p>mknod(2) で UNIX ドメインソケットの作成に対する強制アクセス制御のレベルを指定する。</p>  <p>mknod(2) で UNIX ドメインソケットの作成に対する強制アクセス制御のレベルを指定します。</p>
822    
823  <table border="1">  <table border="1">
824  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
825  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
826  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
827  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
828  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
829  </table>  </table>
830    
831  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_MOUNT">MAC_FOR_CAPABILITY::SYS_MOUNT</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_MOUNT">MAC_FOR_CAPABILITY::SYS_MOUNT</a></h3>
832    
833  <p>mount(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>mount(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
834    
835  <table border="1">  <table border="1">
836  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
837  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
838  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
839  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
840  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
841  </table>  </table>
842    
843  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UMOUNT">MAC_FOR_CAPABILITY::SYS_UMOUNT</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UMOUNT">MAC_FOR_CAPABILITY::SYS_UMOUNT</a></h3>
844    
845  <p>umount(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>umount(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
846    
847  <table border="1">  <table border="1">
848  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
849  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
850  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
851  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
852  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
853  </table>  </table>
854    
855  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_REBOOT">MAC_FOR_CAPABILITY::SYS_REBOOT</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_REBOOT">MAC_FOR_CAPABILITY::SYS_REBOOT</a></h3>
856    
857  <p>reboot(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>reboot(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
858    
859  <table border="1">  <table border="1">
860  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
861  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
862  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
863  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
864  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
865  </table>  </table>
866    
867  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHROOT">MAC_FOR_CAPABILITY::SYS_CHROOT</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHROOT">MAC_FOR_CAPABILITY::SYS_CHROOT</a></h3>
868    
869  <p>chroot(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>chroot(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
870    
871  <table border="1">  <table border="1">
872  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
873  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
874  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
875  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
876  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
877  </table>  </table>
878    
879  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KILL">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KILL">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3>
880    
881  <p>0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用に対する強制アクセス制御のレベルを指定します。</p>
882    
883  <table border="1">  <table border="1">
884  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
885  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
886  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
887  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
888  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
889  </table>  </table>
890    
891  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_VHANGUP">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_VHANGUP">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3>
892    
893  <p>vhangup(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>vhangup(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
894    
895  <table border="1">  <table border="1">
896  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
897  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
898  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
899  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
900  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
901  </table>  </table>
902    
903  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_TIME">MAC_FOR_CAPABILITY::SYS_TIME</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_TIME">MAC_FOR_CAPABILITY::SYS_TIME</a></h3>
904    
905  <p>stime(2) settimeofday(2) adjtimex(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>stime(2) settimeofday(2) adjtimex(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
906    
907  <table border="1">  <table border="1">
908  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
909  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
910  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
911  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
912  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
913  </table>  </table>
914    
915  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_NICE">MAC_FOR_CAPABILITY::SYS_NICE</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_NICE">MAC_FOR_CAPABILITY::SYS_NICE</a></h3>
916    
917  <p>nice(2) setpriority(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>nice(2) setpriority(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
918    
919  <table border="1">  <table border="1">
920  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
921  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
922  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
923  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
924  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
925  </table>  </table>
926    
927  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SETHOSTNAME">MAC_FOR_CAPABILITY::SYS_SETHOSTNAME</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SETHOSTNAME">MAC_FOR_CAPABILITY::SYS_SETHOSTNAME</a></h3>
928    
929  <p>sethostname(2) setdomainname(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>sethostname(2) setdomainname(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
930    
931  <table border="1">  <table border="1">
932  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
933  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
934  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
935  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
936  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
937  </table>  </table>
938    
939  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_LINK">MAC_FOR_CAPABILITY::SYS_LINK</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_LINK">MAC_FOR_CAPABILITY::SYS_LINK</a></h3>
940    
941  <p>link(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>link(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
942    
943  <table border="1">  <table border="1">
944  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
945  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
946  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
947  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
948  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
949  </table>  </table>
950    
951  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SYMLINK">MAC_FOR_CAPABILITY::SYS_SYMLINK</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SYMLINK">MAC_FOR_CAPABILITY::SYS_SYMLINK</a></h3>
952    
953  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
954    
955  <table border="1">  <table border="1">
956  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
957  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
958  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
959  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
960  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
961  </table>  </table>
962    
963  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_RENAME">MAC_FOR_CAPABILITY::SYS_RENAME</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_RENAME">MAC_FOR_CAPABILITY::SYS_RENAME</a></h3>
964    
965  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
966    
967  <table border="1">  <table border="1">
968  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
969  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
970  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
971  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
972  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
973  </table>  </table>
974    
975  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UNLINK">MAC_FOR_CAPABILITY::SYS_UNLINK</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UNLINK">MAC_FOR_CAPABILITY::SYS_UNLINK</a></h3>
976    
977  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>symlink(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
978    
979  <table border="1">  <table border="1">
980  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
981  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
982  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
983  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
984  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
985  </table>  </table>
986    
987  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHMOD">MAC_FOR_CAPABILITY::SYS_CHMOD</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHMOD">MAC_FOR_CAPABILITY::SYS_CHMOD</a></h3>
988    
989  <p>chmod(2) fchmod(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>chmod(2) fchmod(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
990    
991  <table border="1">  <table border="1">
992  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
993  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
994  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
995  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
996  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
997  </table>  </table>
998    
999  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHOWN">MAC_FOR_CAPABILITY::SYS_CHOWN</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHOWN">MAC_FOR_CAPABILITY::SYS_CHOWN</a></h3>
1000    
1001  <p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
1002    
1003  <table border="1">  <table border="1">
1004  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1005  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1006  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1007  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1008  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1009  </table>  </table>
1010    
1011  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_IOCTL">MAC_FOR_CAPABILITY::SYS_IOCTL</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_IOCTL">MAC_FOR_CAPABILITY::SYS_IOCTL</a></h3>
1012    
1013  <p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
1014    
1015  <table border="1">  <table border="1">
1016  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1017  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1018  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1019  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1020  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1021  </table>  </table>
1022    
1023  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD">MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD">MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD</a></h3>
1024    
1025  <p>kexec_load(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>kexec_load(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
1026    
1027  <table border="1">  <table border="1">
1028  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1029  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1030  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1031  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1032  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1033  </table>  </table>
1034    
1035  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT">MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT">MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT</a></h3>
1036    
1037  <p>pivot_root(2) の使用に対する強制アクセス制御のレベルを指定する。</p>  <p>pivot_root(2) の使用に対する強制アクセス制御のレベルを指定します。</p>
1038    
1039  <table border="1">  <table border="1">
1040  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1041  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1042  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1043  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1044  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1045  </table>  </table>
1046    
1047  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PTRACE">MAC_FOR_CAPABILITY::SYS_PTRACE</a></h3>  <h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PTRACE">MAC_FOR_CAPABILITY::SYS_PTRACE</a></h3>
1048    
1049  <p>ptrace(2) の使用に対する強制アクセス制御のレベルを指定する。<br>  <p>ptrace(2) の使用に対する強制アクセス制御のレベルを指定します。<br>
1050    
1051  <table border="1">  <table border="1">
1052  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1053  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1054  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1055  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1056  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1057  </table>  </table>
1058    
1059  <h3><a name="profile_MAC_FOR_NETWORK">MAC_FOR_NETWORK</a></h3>  <h3><a name="profile_MAC_FOR_NETWORK">MAC_FOR_NETWORK</a></h3>
1060    
1061  <p>ネットワークに対する強制アクセス制御のレベルを指定する。</p>  <p>ネットワークに対する強制アクセス制御のレベルを指定します。</p>
1062    
1063  <table border="1">  <table border="1">
1064  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1065  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1066  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1067  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1068  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1069  </table>  </table>
1070    
1071  <h3><a name="profile_MAC_FOR_SIGNAL">MAC_FOR_SIGNAL</a></h3>  <h3><a name="profile_MAC_FOR_SIGNAL">MAC_FOR_SIGNAL</a></h3>
1072    
1073  <p>シグナルの送信に対する強制アクセス制御のレベルを指定する。</p>  <p>シグナルの送信に対する強制アクセス制御のレベルを指定します。</p>
1074    
1075  <table border="1">  <table border="1">
1076  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1077  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1078  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1079  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1080  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1081  </table>  </table>
1082    
1083  <h3><a name="profile_DENY_CONCEAL_MOUNT">DENY_CONCEAL_MOUNT</a></h3>  <h3><a name="profile_DENY_CONCEAL_MOUNT">DENY_CONCEAL_MOUNT</a></h3>
1084  <p>既存のマウントを隠蔽するようなマウントを禁止する。</p>  <p>既存のマウントを隠蔽するようなマウントを禁止します。</p>
1085    
1086  <table border="1">  <table border="1">
1087  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1088  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1089  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。既存のマウントを隠蔽するようなマウント要求に対して警告メッセージを表示しますが、拒否はしません。</td></tr>
1090  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。既存のマウントを隠蔽するようなマウント要求に対してエラーメッセージを表示し、拒否します。</td></tr>
1091  </table>  </table>
1092    
1093  <h3><a name="profile_RESTRICT_CHROOT">RESTRICT_CHROOT</a></h3>  <h3><a name="profile_RESTRICT_CHROOT">RESTRICT_CHROOT</a></h3>
1094    
1095  <p>chroot で移動可能なディレクトリの制限を有効にする。</p>  <p>chroot で移動可能なディレクトリの制限を有効にします。</p>
1096    
1097  <table border="1">  <table border="1">
1098  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1099  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1100  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1101  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1102  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1103  </table>  </table>
1104    
1105  <h3><a name="profile_RESTRICT_MOUNT">RESTRICT_MOUNT</a></h3>  <h3><a name="profile_RESTRICT_MOUNT">RESTRICT_MOUNT</a></h3>
1106    
1107  <p>mount で指定可能なパラメータの制限を有効にする。</p>  <p>mount で指定可能なパラメータの制限を有効にします。</p>
1108    
1109  <table border="1">  <table border="1">
1110  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1111  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1112  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1113  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1114  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1115  </table>  </table>
1116    
1117  <h3><a name="profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></h3>  <h3><a name="profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></h3>
1118    
1119  <p>指定されたディレクトリのアンマウントを禁止する。</p>  <p>指定されたディレクトリのアンマウントを禁止します。</p>
1120    
1121  <table border="1">  <table border="1">
1122  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1123  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1124  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。指定されたディレクトリのアンマウント要求に対して警告メッセージを表示しますが、拒否はしません。</td></tr>
1125  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。指定されたディレクトリのアンマウント要求に対してエラーメッセージを表示し、拒否します。</td></tr>
1126  </table>  </table>
1127    
1128  <h3><a name="profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></h3>  <h3><a name="profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></h3>
1129    
1130  <p>pivot_root で交換可能なディレクトリの制限を有効にする。</p>  <p>pivot_root で交換可能なディレクトリの制限を有効にします。</p>
1131    
1132  <table border="1">  <table border="1">
1133  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1134  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1135  <tr><td>learning</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr>  <tr><td>learning</td><td>学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。</td></tr>
1136  <tr><td>permissive</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr>  <tr><td>permissive</td><td>許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。</td></tr>
1137  <tr><td>enforcing</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr>  <tr><td>enforcing</td><td>強制モード。ポリシに違反するアクセス要求を拒否します。</td></tr>
1138  </table>  </table>
1139    
1140  <h3><a name="profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></h3>  <h3><a name="profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></h3>
1141    
1142  <p>ローカルのポート番号を自動選択させる際に特定のポート番号を選択させないようにするかどうかを指定する。</p>  <p>ローカルのポート番号を自動選択させる際に特定のポート番号を選択させないようにするかどうかを指定します。</p>
1143    
1144  <table border="1">  <table border="1">
1145  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1146  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作する。</td></tr>  <tr><td>disabled</td><td>無効。通常のカーネルと同様に動作します。</td></tr>
1147  <tr><td>enabled</td><td>有効。ローカルのポート番号を自動選択させる際に、特定のポート番号を選択させないようにする。</td></tr>  <tr><td>enabled</td><td>有効。ローカルのポート番号を自動選択させる際に、特定のポート番号を選択させないようにします。</td></tr>
1148  </table>  </table>
1149    
1150  <h3><a name="profile_MAX_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></h3>  <h3><a name="profile_MAX_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></h3>
1151    
1152  <p>学習モードに於いて自動的に追加されるアクセス許可の上限を指定する。デフォルトは 2048 件。</p>  <p>学習モードに於いて自動的に追加されるアクセス許可の上限を指定します。デフォルトは 2048 件です。</p>
1153    
1154  <h3><a name="profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></h3>  <h3><a name="profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></h3>
1155    
1156  <p>カーネル内に保持する、ポリシーによって許可されたアクセス要求のログの件数を指定する。デフォルトは 1024 件。</p>  <p>カーネル内に保持する、ポリシによって許可されたアクセス要求のログの件数を指定します。デフォルトは 1024 件です。</p>
1157    
1158  <h3><a name="profile_">MAX_REJECT_LOG</a></h3>  <h3><a name="profile_MAX_REJECT_LOG">MAX_REJECT_LOG</a></h3>
1159    
1160  <p>カーネル内に保持する、ポリシーによって許可されなかったアクセス要求のログの件数を指定する。デフォルトは 1024 件。</p>  <p>カーネル内に保持する、ポリシによって許可されなかったアクセス要求のログの件数を指定します。デフォルトは 1024 件です。</p>
1161    
1162  <h3><a name="profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></h3>  <h3><a name="profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></h3>
1163    
1164  <p>ドメイン別ポリシーに対する違反を syslog に表示するかどうかを指定する。</p>  <p>ドメインポリシに対する違反を syslog に表示するかどうかを指定します。</p>
1165    
1166  <table border="1">  <table border="1">
1167  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1168  <tr><td>disabled</td><td>ドメイン別ポリシーに対する違反を表示しない。</td></tr>  <tr><td>disabled</td><td>ドメインポリシに対する違反を表示しない。</td></tr>
1169  <tr><td>enabled</td><td>ドメイン別ポリシーに対する違反を表示する。</td></tr>  <tr><td>enabled</td><td>ドメインポリシに対する違反を表示します。</td></tr>
1170  </table>  </table>
1171    
1172  <h3><a name="profile_ALLOW_ENFORCE_GRACE">ALLOW_ENFORCE_GRACE</a></h3>  <h3><a name="profile_ALLOW_ENFORCE_GRACE">ALLOW_ENFORCE_GRACE</a></h3>
1173    
1174  <p>強制モードに於いてポリシーに違反したアクセス要求を対話的に許可できるようにするかどうかを指定する。</p>  <p>強制モードに於いてポリシに違反したアクセス要求を対話的に許可できるようにするかどうかを指定します。</p>
1175    
1176  <table border="1">  <table border="1">
1177  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1178  <tr><td>disabled</td><td>強制モードでポリシーに違反したら直ちに拒否する。</td></tr>  <tr><td>disabled</td><td>強制モードでポリシに違反したら直ちに拒否します。</td></tr>
1179  <tr><td>enabled</td><td>強制モードでポリシーに違反しても、対話的な操作により許可することを可能にする。</td></tr>  <tr><td>enabled</td><td>強制モードでポリシに違反しても、対話的な操作により許可することを可能にします。</td></tr>
1180  </table>  </table>
1181    
1182  <h3><a name="profile_SLEEP_PERIOD">SLEEP_PERIOD</a></h3>  <h3><a name="profile_SLEEP_PERIOD">SLEEP_PERIOD</a></h3>
1183    
1184  <p>強制モードに於いてポリシー違反が発生した場合にスリープさせるかどうかを指定する。</p>  <p>強制モードに於いてポリシ違反が発生した場合にスリープさせるかどうかを指定します。</p>
1185    
1186  <table border="1">  <table border="1">
1187  <tr><td>値</td><td>内容</td></tr>  <tr><td>値</td><td>内容</td></tr>
1188  <tr><td>0 〜 3000</td><td>スリープさせる時間を0.1秒単位で指定する。デフォルトは0。</td></tr>  <tr><td>0 〜 3000</td><td>スリープさせる時間を 0.1 秒単位で指定します。デフォルトは 0 秒です。</td></tr>
1189  </table>  </table>
1190    
1191  <h2><a name="system_policy">/proc/ccs/system_policy</a></h2>  <h2><a name="system_policy">/proc/ccs/system_policy</a></h2>
1192    
1193  <h3><a name="system_policy_allow_mount">allow_mount</a></h3>  <h3><a name="system_policy_allow_mount">allow_mount</a></h3>
1194  <p>マウント許可を指定するには、 allow_mount というディレクティブに続けて、「デバイスファイル マウントポイント ファイルシステム オプション」を指定する。 デバイスファイルを必要とするファイルシステムを指定する場合は、デバイスファイルは正規化されたファイル名でなければいけない。マウントポイントは正規化されたディレクトリ名でなければいけない。オプションは数値で指定する。</p>  <p>マウント許可を指定するには、 allow_mount というディレクティブに続けて、「デバイスファイル マウントポイント ファイルシステム オプション」を指定します。 デバイスファイルを必要とするファイルシステムを指定する場合は、デバイスファイルは正規化されたファイル名でなければいけません。マウントポイントは正規化されたディレクトリ名でなければいけません。オプションは 16 進数の数値で指定します。</p>
1195    
1196  <p>「any マウントポイント --remount オプション」と指定すると、「mount -o remount マウントポイント」が許可される。</p>  <p>「any マウントポイント --remount オプション」と指定すると、「mount -o remount マウントポイント」が許可されます。</p>
1197    
1198  <p>「複製元 複製先 --bind オプション」と指定すると、「mount --bind 複製元 複製先」が許可される。<br>  <p>「複製元 複製先 --bind オプション」と指定すると、「mount --bind 複製元 複製先」が許可されます。<br>
1199  「移動元 移動先 --move オプション」と指定すると、「mount --move 移動元 移動先」が許可される。<br>  「移動元 移動先 --move オプション」と指定すると、「mount --move 移動元 移動先」が許可されます。<br>
1200  複製元/複製先/移動元/移動先は正規化されたディレクトリ名でなければならない。</p>  複製元/複製先/移動元/移動先は正規化されたディレクトリ名でなければなりません。</p>
1201    
1202  <p>カーネル 2.6.15 以降では、 Shared Subtree という機能が利用できる。<br>  <p>カーネル 2.6.15 以降では、 Shared Subtree という機能が利用できる。<br>
1203  「any マウントポイント --make-unbindable オプション」と指定すると、「mount --make-unbindable マウントポイント」が許可される。<br>  「any マウントポイント --make-unbindable オプション」と指定すると、「mount --make-unbindable マウントポイント」が許可されます。<br>
1204  「any マウントポイント --make-private オプション」と指定すると、「mount --make-private マウントポイント」が許可される。<br>  「any マウントポイント --make-private オプション」と指定すると、「mount --make-private マウントポイント」が許可されます。<br>
1205  「any マウントポイント --make-slave オプション」と指定すると、「mount --make-slave マウントポイント」が許可される。<br>  「any マウントポイント --make-slave オプション」と指定すると、「mount --make-slave マウントポイント」が許可されます。<br>
1206  「any マウントポイント --make-shared オプション」と指定すると、「mount --make-shared マウントポイント」が許可される。  「any マウントポイント --make-shared オプション」と指定すると、「mount --make-shared マウントポイント」が許可されます。
1207  </p>  </p>
1208    
1209  <p>(例)<br>  <p>(例)<br>
# Line 1173  allow_mount /dev/hdc /var/www/ ext2 0xF< Line 1216  allow_mount /dev/hdc /var/www/ ext2 0xF<
1216  allow_mount any / --remount 0x0</p>  allow_mount any / --remount 0x0</p>
1217    
1218  <h3><a name="system_policy_deny_unmount">deny_unmount</a></h3>  <h3><a name="system_policy_deny_unmount">deny_unmount</a></h3>
1219  <p>アンマウント禁止を指定するには、 deny_unmount というディレクティブに続けて、アンマウントを許可しない正規化されたディレクトリ名を指定する。<br>  <p>アンマウント禁止を指定するには、 deny_unmount というディレクティブに続けて、アンマウントを許可しない正規化されたディレクトリ名を指定します。<br>
1220  通常、 /sbin/mingetty が使用する /dev/tty? を含む /dev/ ディレクトリと、リモートログインする場合に pty デバイスファイルが作成される /dev/pts/ ディレクトリを指定する。</p>  通常、 /sbin/mingetty が使用する /dev/tty? を含む /dev/ ディレクトリと、リモートログインする場合に pty デバイスファイルが作成される /dev/pts/ ディレクトリを指定します。</p>
1221  <p>/dev が読み込み専用になってしまったり、 /dev/pts がアンマウントされてしまうと、ログインができなくなる。そのため、 / が読み込み専用のシステムでは、 /dev/ や /dev/pts/ がアンマウントされないようにしなければならない。</p>  <p>/dev が読み込み専用になってしまったり、 /dev/pts がアンマウントされてしまうと、ログインができなくなる。そのため、 / が読み込み専用のシステムでは、 /dev/ や /dev/pts/ がアンマウントされないようにしなければなりません。</p>
1222    
1223  <p>(例)<br>  <p>(例)<br>
1224  deny_unmount /dev/<br>  deny_unmount /dev/<br>
# Line 1183  deny_unmount /dev/pts/<br> Line 1226  deny_unmount /dev/pts/<br>
1226  deny_unmount /proc/</p>  deny_unmount /proc/</p>
1227    
1228  <h3><a name="system_policy_allow_chroot">allow_chroot</a></h3>  <h3><a name="system_policy_allow_chroot">allow_chroot</a></h3>
1229  <p>chroot 許可を指定するには、 allow_chroot というディレクティブに続けて、 chroot で移動することを許可したい正規化されたディレクトリ名を指定する。<br>  <p>chroot 許可を指定するには、 allow_chroot というディレクティブに続けて、 chroot で移動することを許可したい正規化されたディレクトリ名を指定します。<br>
1230  通常、 sshd が使用する /var/empty/sshd/ を指定する。 その他に chroot 環境で動かしたいアプリケーションや、 chroot を行うアプリケーション( vsftpd の場合 /usr/share/empty/ )が存在する場合は、それらも指定する。</p>  通常、 sshd が使用する /var/empty/sshd/ を指定します。 その他に chroot 環境で動かしたいアプリケーションや、 chroot を行うアプリケーション( vsftpd の場合 /usr/share/empty/ )が存在する場合は、それらも指定します。</p>
1231    
1232  <p>(例)<br>  <p>(例)<br>
1233  allow_chroot /var/empty/sshd/<br>  allow_chroot /var/empty/sshd/<br>
# Line 1193  allow_chroot /var/www/html/<br> Line 1236  allow_chroot /var/www/html/<br>
1236  allow_chroot /</p>  allow_chroot /</p>
1237    
1238  <h3><a name="system_policy_allow_pivot_root">allow_pivot_root</a></h3>  <h3><a name="system_policy_allow_pivot_root">allow_pivot_root</a></h3>
1239  <p>pivot_root 許可を指定するには、 allow_pivot_root というディレクティブに続けて、新しいルートとなる正規化されたディレクトリ名と古いルートディレクトリとなる正規化されたディレクトリ名を指定する。<br>  <p>pivot_root 許可を指定するには、 allow_pivot_root というディレクティブに続けて、新しいルートとなる正規化されたディレクトリ名と古いルートディレクトリとなる正規化されたディレクトリ名を指定します。<br>
1240  通常、このディレクティブを使う必要は無い。</p>  通常、このディレクティブを使う必要は無い。</p>
1241    
1242  <h3><a name="system_policy_deny_autobind">deny_autobind</a></h3>  <h3><a name="system_policy_deny_autobind">deny_autobind</a></h3>
1243  <p>ローカルポートの自動選択で特定のポート番号が選択させるのを禁止するには、 deny_autobind というディレクティブに続けて、ローカルポート番号を指定する。 このディレクティブは、特定のポート番号が一時的な用途で割り当てられるのを防ぐのが狙いである。 例えば、一部のプロキシサーバはポート8080を使用するので、ポート8080が一時的な用途のために割り当てられるべきではない。</p>  <p>ローカルポートの自動選択で特定のポート番号が選択させるのを禁止するには、 deny_autobind というディレクティブに続けて、ローカルポート番号を指定します。 このディレクティブは、特定のポート番号が一時的な用途で割り当てられるのを防ぐのが狙いである。 例えば、一部のプロキシサーバはポート8080を使用するので、ポート8080が一時的な用途のために割り当てられるべきではない。</p>
1244    
1245  <p>(例)<br>  <p>(例)<br>
1246  deny_autobind 1-1023<br>  deny_autobind 1-1023<br>
# Line 1205  deny_autobind 8080</p> Line 1248  deny_autobind 8080</p>
1248    
1249  <h2><a name="domain_policy">/proc/ccs/domain_policy</a></h2>  <h2><a name="domain_policy">/proc/ccs/domain_policy</a></h2>
1250    
1251  <p>このファイルでは、全てのドメインを定義し、各ドメインに対して与えるアクセス許可を定義する。</p>  <p>このファイルでは、全てのドメインを定義し、各ドメインに対して与えるアクセス許可を定義します。</p>
1252    
1253  <p>ドメインを定義している行(&lt;kernel&gt;で始まる行)の次行から次のドメインを定義している行の前行までが、そのドメインに対するアクセス許可である。</p>  <p>ドメインを定義している行(&lt;kernel&gt;で始まる行)の次行から次のドメインを定義している行の前行までが、そのドメインに対するアクセス許可である。</p>
1254    
1255  <p>それぞれのアクセス許可について、必要に応じて追加の条件を指定することができる。そのための構文は<a href="#conditional_acl">条件付きアクセス許可の指定</a>で説明する。さらに、必要に応じてプロセスの状態を切り替え、プロセスの状態も条件として使うための方法を<a href="#stateful_acl">ステートフルなアクセス許可の指定</a>で説明する。</p>  <p>それぞれのアクセス許可について、必要に応じて追加の条件を指定することができる。そのための構文は<a href="#conditional_acl">条件付きアクセス許可の指定</a>で説明します。さらに、必要に応じてプロセスの状態を切り替え、プロセスの状態も条件として使うための方法を<a href="#stateful_acl">ステートフルなアクセス許可の指定</a>で説明します。</p>
1256    
1257  <h3><a name="domain_policy_allow_execute">allow_execute</a></h3>  <h3><a name="domain_policy_allow_execute">allow_execute</a></h3>
1258  <p>指定されたパス名を実行することを許可する。パス名にワイルドカードを使用することは認められない。ワイルドカードで指定しなければ対応できない場合には、プログラム名をグループ化してからアクセス許可を与える。</p>  <p>指定されたパス名を実行することを許可します。パス名にワイルドカードを使用することは認められない。ワイルドカードで指定しなければ対応できない場合には、プログラム名をグループ化してからアクセス許可を与える。</p>
1259  <p>(例)allow_execute /bin/ls</p>  <p>(例)allow_execute /bin/ls</p>
1260  <p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_aggregator">aggregator</a></p>  <p>関連項目:<a href="#domain_transition">ドメイン遷移</a> <a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_aggregator">aggregator</a></p>
1261    
1262  <h3><a name="domain_policy_allow_write">allow_write</a></h3>  <h3><a name="domain_policy_allow_write">allow_write</a></h3>
1263  <p>指定されたパス名を書き込みモードでオープンすることを許可する。</p>  <p>指定されたパス名を書き込みモードでオープンすることを許可します。</p>
1264  <p>(例) allow_write /dev/null</p>  <p>(例) allow_write /dev/null</p>
1265  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1266    
1267  <h3><a name="domain_policy_allow_read">allow_read</a></h3>  <h3><a name="domain_policy_allow_read">allow_read</a></h3>
1268  <p>指定されたパス名を読み込みモードでオープンすることを許可する。</p>  <p>指定されたパス名を読み込みモードでオープンすることを許可します。</p>
1269  <p>(例) allow_read /proc/meminfo</p>  <p>(例) allow_read /proc/meminfo</p>
1270  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1271    
1272  <h3><a name="domain_policy_allow_read/write">allow_read/write</a></h3>  <h3><a name="domain_policy_allow_read/write">allow_read/write</a></h3>
1273  <p>指定されたパス名を読み書きモードでオープンすることを許可する。</p>  <p>指定されたパス名を読み書きモードでオープンすることを許可します。</p>
1274  <p>(例) allow_read/write /dev/null</p>  <p>(例) allow_read/write /dev/null</p>
1275  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1276    
1277  <h3><a name="domain_policy_allow_create">allow_create</a></h3>  <h3><a name="domain_policy_allow_create">allow_create</a></h3>
1278  <p>指定されたパス名のファイルを新規作成することを許可する。</p>  <p>指定されたパス名のファイルを新規作成することを許可します。</p>
1279  <p>(例) allow_create /var/lock/subsys/crond</p>  <p>(例) allow_create /var/lock/subsys/crond</p>
1280  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1281    
1282  <h3><a name="domain_policy_allow_unlink">allow_unlink</a></h3>  <h3><a name="domain_policy_allow_unlink">allow_unlink</a></h3>
1283  <p>指定されたパス名を削除することを許可する。</p>  <p>指定されたパス名を削除することを許可します。</p>
1284  <p>(例) allow_unlink /var/lock/subsys/crond</p>  <p>(例) allow_unlink /var/lock/subsys/crond</p>
1285  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1286    
1287  <h3><a name="domain_policy_allow_mkdir">allow_mkdir</a></h3>  <h3><a name="domain_policy_allow_mkdir">allow_mkdir</a></h3>
1288  <p>パス名で指定されたディレクトリを作成することを許可する。</p>  <p>パス名で指定されたディレクトリを作成することを許可します。</p>
1289  <p>(例) allow_mkdir /tmp/logwatch.\*/</p>  <p>(例) allow_mkdir /tmp/logwatch.\*/</p>
1290  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1291    
1292  <h3><a name="domain_policy_allow_rmdir">allow_rmdir</a></h3>  <h3><a name="domain_policy_allow_rmdir">allow_rmdir</a></h3>
1293  <p>ディレクトリの削除を許可する。</p>  <p>ディレクトリの削除を許可します。</p>
1294  <p>(例) allow_rmdir /tmp/logwatch.\*/</p>  <p>(例) allow_rmdir /tmp/logwatch.\*/</p>
1295  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1296    
1297  <h3><a name="domain_policy_allow_mkfifo">allow_mkfifo</a></h3>  <h3><a name="domain_policy_allow_mkfifo">allow_mkfifo</a></h3>
1298  <p>FIFO の作成を許可する。</p>  <p>FIFO の作成を許可します。</p>
1299  <p>(例) allow_mkfifo /dev/initctl</p>  <p>(例) allow_mkfifo /dev/initctl</p>
1300  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1301    
1302  <h3><a name="domain_policy_allow_mksock">allow_mksock</a></h3>  <h3><a name="domain_policy_allow_mksock">allow_mksock</a></h3>
1303  <p>UNIX ドメインソケットの作成を許可する。</p>  <p>UNIX ドメインソケットの作成を許可します。</p>
1304  <p>(例) allow_mksock /dev/log</p>  <p>(例) allow_mksock /dev/log</p>
1305  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1306    
1307  <h3><a name="domain_policy_allow_mkblock">allow_mkblock</a></h3>  <h3><a name="domain_policy_allow_mkblock">allow_mkblock</a></h3>
1308  <p>ブロック型デバイスファイルの作成を許可する。</p>  <p>ブロック型デバイスファイルの作成を許可します。</p>
1309  <p>(例) allow_mkblock /dev/\*</p>  <p>(例) allow_mkblock /dev/\*</p>
1310  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1311    
1312  <h3><a name="domain_policy_allow_mkchar">allow_mkchar</a></h3>  <h3><a name="domain_policy_allow_mkchar">allow_mkchar</a></h3>
1313  <p>キャラクタ型デバイスファイルの作成を許可する。</p>  <p>キャラクタ型デバイスファイルの作成を許可します。</p>
1314  <p>(例) allow_mkchar /dev/\*</p>  <p>(例) allow_mkchar /dev/\*</p>
1315  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1316    
1317  <h3><a name="domain_policy_allow_truncate">allow_truncate</a></h3>  <h3><a name="domain_policy_allow_truncate">allow_truncate</a></h3>
1318  <p>ファイルの切り詰めと伸長を許可する。</p>  <p>ファイルの切り詰めと伸長を許可します。</p>
1319  <p>(例) allow_truncate /etc/mtab</p>  <p>(例) allow_truncate /etc/mtab</p>
1320  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1321    
1322  <h3><a name="domain_policy_allow_symlink">allow_symlink</a></h3>  <h3><a name="domain_policy_allow_symlink">allow_symlink</a></h3>
1323  <p>シンボリックリンクの作成を許可する。</p>  <p>シンボリックリンクの作成を許可します。</p>
1324  <p>(例) allow_symlink /dev/cdrom</p>  <p>(例) allow_symlink /dev/cdrom</p>
1325  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1326    
1327  <h3><a name="domain_policy_allow_link">allow_link</a></h3>  <h3><a name="domain_policy_allow_link">allow_link</a></h3>
1328  <p>ハードリンクの作成を許可する。</p>  <p>ハードリンクの作成を許可します。</p>
1329  <p>(例) allow_link /etc/mtab~\$ /etc/mtab~</p>  <p>(例) allow_link /etc/mtab~\$ /etc/mtab~</p>
1330  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1331    
1332  <h3><a name="domain_policy_allow_rename">allow_rename</a></h3>  <h3><a name="domain_policy_allow_rename">allow_rename</a></h3>
1333  <p>ファイル名の変更を許可する。</p>  <p>ファイル名の変更を許可します。</p>
1334  <p>(例) allow_rename /etc/mtab.tmp /etc/mtab</p>  <p>(例) allow_rename /etc/mtab.tmp /etc/mtab</p>
1335  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a></p>
1336    
1337  <h3><a name="domain_policy_allow_rewrite">allow_rewrite</a></h3>  <h3><a name="domain_policy_allow_rewrite">allow_rewrite</a></h3>
1338  <p><a href="#exception_policy_deny_rewrite">deny_rewrite</a>によりファイルの内容の上書きが禁止されているパス名が指すファイル内容の上書きを許可する。</p>  <p><a href="#exception_policy_deny_rewrite">deny_rewrite</a>によりファイルの内容の上書きが禁止されているパス名が指すファイル内容の上書きを許可します。</p>
1339  <p>(例) allow_rewrite /var/log/messages</p>  <p>(例) allow_rewrite /var/log/messages</p>
1340  <p>関連項目:<a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_deny_rewrite">deny_rewrite</a></p>  <p>関連項目:<a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_deny_rewrite">deny_rewrite</a></p>
1341    
1342  <h3><a name="domain_policy_allow_argv0">allow_argv0</a></h3>  <h3><a name="domain_policy_allow_argv0">allow_argv0</a></h3>
1343    
1344  <p>argv[0] の組み合わせを制限するには、 allow_argv0 というディレクティブに続けて、「正規化されたファイル名」と「argv[0] の最後の / より後ろの部分」を指定する。</p>  <p>argv[0] の組み合わせを制限するには、 allow_argv0 というディレクティブに続けて、「正規化されたファイル名」と「argv[0] の最後の / より後ろの部分」を指定します。</p>
1345    
1346  <p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。いくつかのプログラム(例えば busybox )は argv[0] の内容によって振る舞いを変化させる。  <p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。いくつかのプログラム(例えば busybox )は argv[0] の内容によって振る舞いを変化させる。
1347  プログラムへのシンボリックリンクを経由してプログラムを実行する場合、 TOMOYO Linux のドメイン遷移は filename が指すパス名を正規化した内容に基づいて行われるのに対し、振る舞いは argv[0] (通常は filename が指すパス名と同じ内容)に基づいて行われてしまう。例えば、 /bin/ls と /bin/cat が busybox へのハードリンクとして提供されている環境において、 /tmp/cat という /bin/ls へのシンボリックリンクを作成して /tmp/cat を実行することにより、 /bin/ls のためのドメインで cat として振舞うことができてしまうという抜け穴になる。</p>  プログラムへのシンボリックリンクを経由してプログラムを実行する場合、 TOMOYO Linux のドメイン遷移は filename が指すパス名を正規化した内容に基づいて行われるのに対し、振る舞いは argv[0] (通常は filename が指すパス名と同じ内容)に基づいて行われてしまう。例えば、 /bin/ls と /bin/cat が busybox へのハードリンクとして提供されている環境において、 /tmp/cat という /bin/ls へのシンボリックリンクを作成して /tmp/cat を実行することにより、 /bin/ls のためのドメインで cat として振舞うことができてしまうという抜け穴になる。</p>
# Line 1306  deny_autobind 8080</p> Line 1349  deny_autobind 8080</p>
1349    
1350  <h3><a name="domain_policy_allow_env">allow_env</a></h3>  <h3><a name="domain_policy_allow_env">allow_env</a></h3>
1351    
1352  <p>環境変数名を制限するには、 allow_env というディレクティブに続けて、「環境変数名」を指定する。</p>  <p>環境変数名を制限するには、 allow_env というディレクティブに続けて、「環境変数名」を指定します。</p>
1353    
1354  <p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。多くのプログラムは envp[] の内容によって振る舞いを変化させる。</p>  <p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。多くのプログラムは envp[] の内容によって振る舞いを変化させる。</p>
1355  <p>このディレクティブの目的は、実行されるプログラムに渡される環境変数を制限することである。</p>  <p>このディレクティブの目的は、実行されるプログラムに渡される環境変数を制限することである。</p>
# Line 1315  deny_autobind 8080</p> Line 1358  deny_autobind 8080</p>
1358    
1359  <h3><a name="domain_policy_allow_capability">allow_capability</a></h3>  <h3><a name="domain_policy_allow_capability">allow_capability</a></h3>
1360    
1361  <p>ケイパビリティのアクセス許可を指定するには、 allow_capability というディレクティブに続けて、ケイパビリティを指定する。以下のケイパビリティが指定できる。</p>  <p>ケイパビリティのアクセス許可を指定するには、 allow_capability というディレクティブに続けて、ケイパビリティを指定します。以下のケイパビリティが指定できます。</p>
1362    
1363  <table border="1">  <table border="1">
1364  <tr><td>allow_capability inet_tcp_create</td><td>TCP ソケットの使用を許可</td></tr>  <tr><td>allow_capability inet_tcp_create</td><td>TCP ソケットの使用を許可</td></tr>
# Line 1351  deny_autobind 8080</p> Line 1394  deny_autobind 8080</p>
1394  <tr><td>allow_capability SYS_PTRACE</td><td>ptrace(2) の使用を許可</td></tr>  <tr><td>allow_capability SYS_PTRACE</td><td>ptrace(2) の使用を許可</td></tr>
1395  </table>  </table>
1396    
1397  <p>allow_capability ディレクティブの目的は、プログラムが呼び出すことができるシステムコールを制限することである。幾つかのシステムコールに対しては他のディレクティブやポリシーファイルを使用してより詳細な制限が可能になっている。</p>  <p>allow_capability ディレクティブの目的は、プログラムが呼び出すことができるシステムコールを制限することである。幾つかのシステムコールに対しては他のディレクティブやポリシファイルを使用してより詳細な制限が可能になっている。</p>
1398  <ul>  <ul>
1399  <li>作成を許可するキャラクタ型デバイスファイルのパス名を<a href="#domain_policy_allow_mkblock">allow_mkblock</a>ディレクティブを使用して制限することができる。  <li>作成を許可するキャラクタ型デバイスファイルのパス名を<a href="#domain_policy_allow_mkblock">allow_mkblock</a>ディレクティブを使用して制限することができる。
1400  <li>作成を許可するブロック型デバイスファイルのパス名を<a href="#domain_policy_allow_mkchar">allow_mkchar</a>ディレクティブを使用して制限することができる。  <li>作成を許可するブロック型デバイスファイルのパス名を<a href="#domain_policy_allow_mkchar">allow_mkchar</a>ディレクティブを使用して制限することができる。
# Line 1366  deny_autobind 8080</p> Line 1409  deny_autobind 8080</p>
1409  <li>マウントを許可するデバイスおよびマウントポイントを<a href="#system_policy_allow_mount">allow_mount</a>ディレクティブを使用して制限することができる。  <li>マウントを許可するデバイスおよびマウントポイントを<a href="#system_policy_allow_mount">allow_mount</a>ディレクティブを使用して制限することができる。
1410  <li>アンマウントを許可しないマウントポイントを<a href="#system_policy_deny_unmount">deny_unmount</a>ディレクティブを使用して指定することができる。  <li>アンマウントを許可しないマウントポイントを<a href="#system_policy_deny_unmount">deny_unmount</a>ディレクティブを使用して指定することができる。
1411  <li>chroot で移動できるディレクトリを<a href="#system_policy_allow_chroot">allow_chroot</a>ディレクティブを使用して制限することができる。  <li>chroot で移動できるディレクトリを<a href="#system_policy_allow_chroot">allow_chroot</a>ディレクティブを使用して制限することができる。
1412  <li>pivot_root で交換できるディレクトリを<a href="#system_policy_allpw_pivot_root">allow_pivot_root</a>ディレクティブを使用して制限することができる。  <li>pivot_root で交換できるディレクトリを<a href="#system_policy_allow_pivot_root">allow_pivot_root</a>ディレクティブを使用して制限することができる。
1413  </ul>  </ul>
1414    
1415  <h3><a name="domain_policy_allow_network">allow_network</a></h3>  <h3><a name="domain_policy_allow_network">allow_network</a></h3>
1416    
1417  <p>ネットワークのアクセス許可を指定するには、 allow_network というディレクティブに続けて、プロトコル(TCP UDP RAW の何れか)、 IP アドレス、ポート番号(TCP UDP の場合)またはプロトコル番号(RAW の場合)を指定する。 IPv4 プロトコルおよび IPv6 プロトコルで使用するローカルポート番号が対象である。</p>  <p>ネットワークのアクセス許可を指定するには、 allow_network というディレクティブに続けて、プロトコル(TCP UDP RAW の何れか)、 IP アドレス、ポート番号(TCP UDP の場合)またはプロトコル番号(RAW の場合)を指定します。 IPv4 プロトコルおよび IPv6 プロトコルで使用するローカルポート番号が対象である。</p>
1418  <table border="1">  <table border="1">
1419  <tr><td>ディレクティブ</td><td>許可されるアクセス</td><td>指定例</td></tr>  <tr><td>ディレクティブ</td><td>許可されるアクセス</td><td>指定例</td></tr>
1420  <tr><td>allow_network TCP bind</td><td>ローカルの TCP アドレス/ポートの割り当て</td><td>allow_network TCP bind 0.0.0.0 80</td></tr>  <tr><td>allow_network TCP bind</td><td>ローカルの TCP アドレス/ポートの割り当て</td><td>allow_network TCP bind 0.0.0.0 80</td></tr>
# Line 1392  deny_autobind 8080</p> Line 1435  deny_autobind 8080</p>
1435    
1436  <h3><a name="domain_policy_allow_signal">allow_signal</a></h3>  <h3><a name="domain_policy_allow_signal">allow_signal</a></h3>
1437    
1438  <p>シグナルのアクセス許可を指定するには、 allow_signal というディレクティブに続けて、シグナルの番号および操作対象ドメインを指定する。<br>  <p>シグナルのアクセス許可を指定するには、 allow_signal というディレクティブに続けて、シグナルの番号および操作対象ドメインを指定します。<br>
1439   例外が2つ存在する。シグナル番号が0の場合は常に許可される。また、自分の属するドメインへのシグナルの場合には常に許可される。<br>   例外が2つ存在します。シグナル番号が0の場合は常に許可されます。また、自分の属するドメインへのシグナルの場合には常に許可されます。<br>
1440   その他の場合、このファイルに指定されたシグナル番号とドメイン名で始まる場合のみそのシグナルを送信できる。<br>   その他の場合、このファイルに指定されたシグナル番号とドメイン名で始まる場合のみそのシグナルを送信できる。<br>
1441   操作対象ドメインとして &lt;kernel&gt; を指定すると、全てのドメインに指定された番号のシグナルを送信できる。</p>   操作対象ドメインとして &lt;kernel&gt; を指定すると、全てのドメインに指定された番号のシグナルを送信できる。</p>
1442    
# Line 1403  deny_autobind 8080</p> Line 1446  deny_autobind 8080</p>
1446    
1447  <h3><a name="domain_policy_ignore_global_allow_read">ignore_global_allow_read</a></h3>  <h3><a name="domain_policy_ignore_global_allow_read">ignore_global_allow_read</a></h3>
1448    
1449  <p>これは、このドメインに対しては例外ポリシーで指定されている <a href="#exception_policy_allow_read">allow_read</a> を無視することを示しています。特定のドメインに対して特に読み込みモードでオープンできるファイルを制限したい場合に使います。</p>  <p>これは、このドメインに対しては例外ポリシで指定されている <a href="#exception_policy_allow_read">allow_read</a> を無視することを示しています。特定のドメインに対して特に読み込みモードでオープンできるファイルを制限したい場合に使います。</p>
1450    
1451  <p>関連項目:<a href="#exception_policy_allow_read">allow_read</a></p>  <p>関連項目:<a href="#exception_policy_allow_read">allow_read</a></p>
1452    
1453  <h3><a name="domain_policy_ignore_global_allow_env">ignore_global_allow_env</a></h3>  <h3><a name="domain_policy_ignore_global_allow_env">ignore_global_allow_env</a></h3>
1454    
1455  <p>これは、このドメインに対しては例外ポリシーで指定されている <a href="#exception_policy_allow_env">allow_env</a> を無視することを示しています。特定のドメインに対して特に環境変数の受け渡しを制限したい場合に使います。</p>  <p>これは、このドメインに対しては例外ポリシで指定されている <a href="#exception_policy_allow_env">allow_env</a> を無視することを示しています。特定のドメインに対して特に環境変数の受け渡しを制限したい場合に使います。</p>
1456    
1457  <p>関連項目:<a href="#exception_policy_allow_env">allow_env</a></p>  <p>関連項目:<a href="#exception_policy_allow_env">allow_env</a></p>
1458    
# Line 1436  deny_autobind 8080</p> Line 1479  deny_autobind 8080</p>
1479    
1480  <h3><a name="exception_policy_file_pattern">file_pattern</a></h3>  <h3><a name="exception_policy_file_pattern">file_pattern</a></h3>
1481    
1482  <p>パス名のパターン化を指示するには、 file_pattern というディレクティブに続けて、パス名のパターンを指定する。パス名は正規化されたパス名でなければならない。このディレクティブは実行許可を与える場合とドメイン定義には適用されない。<br>  <p>パス名のパターン化を指示するには、 file_pattern というディレクティブに続けて、パス名のパターンを指定します。パス名は正規化されたパス名でなければなりません。このディレクティブは実行許可を与える場合とドメイン定義には適用されない。<br>
1483  例えば、プロセスIDを含む正規化されたパス名(/proc/PID/)は、アクセス制御が正しく行われるようにグループ化されなければならない。</p>  例えば、プロセスIDを含む正規化されたパス名(/proc/PID/)は、アクセス制御が正しく行われるようにグループ化されなければなりません。</p>
1484    
1485  <p>学習モード(<a href="#profile_MAC_FOR_FILE">MAC_FOR_FILE</a>がlearningに設定されている状態)でパス名に対するアクセスを行うと、自動的にパターン化された状態で学習される。学習モード以外には影響しない。この構文は、既知のパターンをテンプレート化することによって、後でチューニングを行うときの手間を軽減するためだけに使われる。</p>  <p>学習モード(<a href="#profile_MAC_FOR_FILE">MAC_FOR_FILE</a>がlearningに設定されている状態)でパス名に対するアクセスを行うと、自動的にパターン化された状態で学習されます。学習モード以外には影響しない。この構文は、既知のパターンをテンプレート化することによって、後でチューニングを行うときの手間を軽減するためだけに使われる。</p>
1486    
1487  <h3><a name="exception_policy_path_group">path_group</a></h3>  <h3><a name="exception_policy_path_group">path_group</a></h3>
1488    
1489  <p>パス名のグループを定義するには、 path_group というディレクティブに続けて、グループ名とパス名のパターンを指定する。<br>  <p>パス名のグループを定義するには、 path_group というディレクティブに続けて、グループ名とパス名のパターンを指定します。<br>
1490   例えば、ホームディレクトリ以下の全ファイルをまとめたい場合、</p>   例えば、ホームディレクトリ以下の全ファイルをまとめたい場合、</p>
1491    
1492  <table border="1">  <table border="1">
# Line 1457  path_group HOME-DIR-FILE /home/\*/\*/\*/ Line 1500  path_group HOME-DIR-FILE /home/\*/\*/\*/
1500  </td></tr>  </td></tr>
1501  </table>  </table>
1502    
1503  <p>のように定義しておくことで、ドメイン別ポリシーのファイルに対するアクセス許可を指定する際に</p>  <p>のように定義しておくことで、ドメインポリシのファイルに対するアクセス許可を指定する際に</p>
1504    
1505  <table border="1">  <table border="1">
1506  <tr><td>  <tr><td>
# Line 1465  allow_read @HOME-DIR-FILE Line 1508  allow_read @HOME-DIR-FILE
1508  </td></tr>  </td></tr>
1509  </table>  </table>
1510    
1511  <p>のように指定できる。</p>  <p>のように指定できます。</p>
1512    
1513  <h3><a name="exception_policy_address_group">address_group</a></h3>  <h3><a name="exception_policy_address_group">address_group</a></h3>
1514    
1515  <p>アドレスのグループを定義するには、 address_group というディレクティブに続けて、グループ名とIPアドレスのパターンを指定する。<br>  <p>アドレスのグループを定義するには、 address_group というディレクティブに続けて、グループ名とIPアドレスのパターンを指定します。<br>
1516   例えば、ローカルアドレスをまとめたい場合、</p>   例えば、ローカルアドレスをまとめたい場合、</p>
1517    
1518  <table border="1">  <table border="1">
# Line 1480  address_group local-address 192.168.0.0- Line 1523  address_group local-address 192.168.0.0-
1523  </td></tr>  </td></tr>
1524  </table>  </table>
1525    
1526  <p>のように定義しておくことで、ドメイン別ポリシーのネットワークに対するアクセス許可を指定する際に</p>  <p>のように定義しておくことで、ドメインポリシのネットワークに対するアクセス許可を指定する際に</p>
1527    
1528  <table border="1">  <table border="1">
1529  <tr><td>  <tr><td>
# Line 1488  allow_network TCP accept @local-address Line 1531  allow_network TCP accept @local-address
1531  </td></tr>  </td></tr>
1532  </table>  </table>
1533    
1534  <p>のように指定できる。</p>  <p>のように指定できます。</p>
1535    
1536  <h3><a name="exception_policy_allow_read">allow_read</a></h3>  <h3><a name="exception_policy_allow_read">allow_read</a></h3>
1537    
# Line 1504  allow_network TCP accept @local-address Line 1547  allow_network TCP accept @local-address
1547    
1548  <h3><a name="exception_policy_deny_rewrite">deny_rewrite</a></h3>  <h3><a name="exception_policy_deny_rewrite">deny_rewrite</a></h3>
1549    
1550  <p>deny_rewrite というキーワードを使用して、既に記録されている部分の書き換えを禁止したいファイル(ログファイル等)のパス名を登録する。パターンが使用できる。 deny_rewrite というキーワードを使用して登録されたファイルは、ドメイン用ポリシーの中で明示的に<a href="#domain_policy_allow_rewrite">allow_rewrite</a>というキーワードを用いて許可が与えられない限り、追記ではない書き込みモードでのオープンとファイルの切り詰めが禁止される。</p>  <p>deny_rewrite というキーワードを使用して、既に記録されている部分の書き換えを禁止したいファイル(ログファイル等)のパス名を登録します。パターンが使用できる。 deny_rewrite というキーワードを使用して登録されたファイルは、ドメイン用ポリシの中で明示的に<a href="#domain_policy_allow_rewrite">allow_rewrite</a>というキーワードを用いて許可が与えられない限り、追記ではない書き込みモードでのオープンとファイルの切り詰めが禁止されます。</p>
1551    
1552  <p>関連項目:<a href="#domain_policy_allow_rewrite">allow_rewrite</a></p>  <p>関連項目:<a href="#domain_policy_allow_rewrite">allow_rewrite</a></p>
1553    
1554  <h3><a name="exception_policy_alias">alias</h3>  <h3><a name="exception_policy_alias">alias</a></h3>
1555    
1556  <p>シンボリックリンクを解決した名前ではなくシンボリックリンクの名前のまま実行させるプログラムを指定するには、 alias というディレクティブに続けてシンボリックリンクを解決したパス名とシンボリックリンクを解決する前のパス名を指定する。このディレクティブの目的は、実行時の名前によって異なる振る舞いをするプログラムが、ハードリンクではなくシンボリックリンクで参照される場合に、シンボリックリンクの名前でドメインを遷移できるようにすることである。</p>  <p>シンボリックリンクを解決した名前ではなくシンボリックリンクの名前のまま実行させるプログラムを指定するには、 alias というディレクティブに続けてシンボリックリンクを解決したパス名とシンボリックリンクを解決する前のパス名を指定します。このディレクティブの目的は、実行時の名前によって異なる振る舞いをするプログラムが、ハードリンクではなくシンボリックリンクで参照される場合に、シンボリックリンクの名前でドメインを遷移できるようにすることである。</p>
1557  <p>例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクであるため、通常は /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。しかし、 alias /sbin/killall5 /sbin/pidof という指定をすることで、 /sbin/pidof を実行すると /sbin/pidof が実行されたものとしてドメインが定義されるようにできる。</p>  <p>例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクであるため、通常は /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義されます。しかし、 alias /sbin/killall5 /sbin/pidof という指定をすることで、 /sbin/pidof を実行すると /sbin/pidof が実行されたものとしてドメインが定義されるようにできる。</p>
1558    
1559  <p>関連項目:<a href="#domain_policy_allow_execute">allow_execute</a></p>  <p>関連項目:<a href="#domain_policy_allow_execute">allow_execute</a></p>
1560    
1561  <h3><a name="exception_policy_aggregator">aggregator</h3>  <h3><a name="exception_policy_aggregator">aggregator</a></h3>
1562    
1563  <p>複数のプログラムを単一のプログラム名で扱うには、 aggregator というディレクティブに続けて集約前のプログラム名と集約後のプログラム名を指定する。このディレクティブの目的は、同様のプログラムを集約することである。</p>  <p>複数のプログラムを単一のプログラム名で扱うには、 aggregator というディレクティブに続けて集約前のプログラム名と集約後のプログラム名を指定します。このディレクティブの目的は、同様のプログラムを集約することである。</p>
1564  <p>例えば、 /usr/bin/tac と /bin/cat は似ているので、 aggregator /usr/bin/tac /bin/cat という指定をすることで /usr/bin/tac を /bin/cat のドメインで実行することができるようになる。</p>  <p>例えば、 /usr/bin/tac と /bin/cat は似ているので、 aggregator /usr/bin/tac /bin/cat という指定をすることで /usr/bin/tac を /bin/cat のドメインで実行することができるようになる。</p>
1565  <p>例えば、Fedora Core 3 の /usr/sbin/logrotate は /tmp/logrotate.\?\?\?\?\?\? というパターンのプログラムを作成して実行するが、 TOMOYO Linux では安全上の理由からプログラムの実行許可を与える場合とドメインを定義する場合にパターンを使用することを認めていない。しかし、 aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp という指定をすることで /tmp/logrotate.\?\?\?\?\?\? を /tmp/logrotate.tmp のドメインで実行することができるようになる。</p>  <p>例えば、Fedora Core 3 の /usr/sbin/logrotate は /tmp/logrotate.\?\?\?\?\?\? というパターンのプログラムを作成して実行するが、 TOMOYO Linux では安全上の理由からプログラムの実行許可を与える場合とドメインを定義する場合にパターンを使用することを認めていない。しかし、 aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp という指定をすることで /tmp/logrotate.\?\?\?\?\?\? を /tmp/logrotate.tmp のドメインで実行することができるようになる。</p>
1566    
# Line 1525  allow_network TCP accept @local-address Line 1568  allow_network TCP accept @local-address
1568    
1569  <h3><a name="exception_policy_initialize_domain">initialize_domain</a></h3>  <h3><a name="exception_policy_initialize_domain">initialize_domain</a></h3>
1570    
1571  <p>特定のプログラムが実行された場合にドメイン遷移を初期化させるには、 initialize_domain というディレクティブを使用する。</p>  <p>特定のプログラムが実行された場合にドメイン遷移を初期化させるには、 initialize_domain というディレクティブを使用します。</p>
1572    
1573  <ul>  <ul>
1574  <li>initialize_domain プログラム名 from ドメイン名  <li>initialize_domain プログラム名 from ドメイン名
# Line 1533  allow_network TCP accept @local-address Line 1576  allow_network TCP accept @local-address
1576  <li>initialize_domain プログラム名  <li>initialize_domain プログラム名
1577  </ul>  </ul>
1578    
1579  <p> from 以降が指定されていない場合は任意のドメインから実行された場合に適用される。ドメイン名が &lt;kernel&gt; で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。</p>  <p> from 以降が指定されていない場合は任意のドメインから実行された場合に適用されます。ドメイン名が &lt;kernel&gt; で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用されます。</p>
1580    
1581  <p>このディレクティブの目的は、常駐型プログラムや必要に応じてカーネルから起動されるプログラムを、通常とは異なるドメインに遷移させることで、ドメイン遷移を集約することである。</p>  <p>このディレクティブの目的は、常駐型プログラムや必要に応じてカーネルから起動されるプログラムを、通常とは異なるドメインに遷移させることで、ドメイン遷移を集約することである。</p>
1582    
1583  <p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_no_initialize_domain">no_initialize_domain</a></p>  <p>関連項目:<a href="#domain_transition">ドメイン遷移</a> <a href="#exception_policy_no_initialize_domain">no_initialize_domain</a></p>
1584    
1585  <h3><a name="exception_policy_no_initialize_domain">no_initialize_domain</a></h3>  <h3><a name="exception_policy_no_initialize_domain">no_initialize_domain</a></h3>
1586    
1587  <p>initialize_domain の効力を打ち消すには、 no_initialize_domain というディレクティブを指定する。</p>  <p>initialize_domain の効力を打ち消すには、 no_initialize_domain というディレクティブを指定します。</p>
1588  <ul>  <ul>
1589  <li>no_initialize_domain プログラム名 from ドメイン名  <li>no_initialize_domain プログラム名 from ドメイン名
1590  <li>no_initialize_domain プログラム名 from ドメイン名の最後のプログラム名  <li>no_initialize_domain プログラム名 from ドメイン名の最後のプログラム名
1591  <li>no_initialize_domain プログラム名  <li>no_initialize_domain プログラム名
1592  </ul>  </ul>
1593    
1594  <p>このディレクティブはドメイン遷移を初期化させたくない場合に使用する。</p>  <p>このディレクティブはドメイン遷移を初期化させたくない場合に使用します。</p>
1595    
1596  <p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_initialize_domain">initialize_domain</a></p>  <p>関連項目:<a href="#domain_transition">ドメイン遷移</a> <a href="#exception_policy_initialize_domain">initialize_domain</a></p>
1597    
1598  <h3><a name="exception_policy_keep_domain">keep_domain</a></h3>  <h3><a name="exception_policy_keep_domain">keep_domain</a></h3>
1599    
1600  <p>特定のドメインからプログラムが実行されてもドメイン遷移を行わないようにするには、 keep_domain というディレクティブを使用する。</p>  <p>特定のドメインからプログラムが実行されてもドメイン遷移を行わないようにするには、 keep_domain というディレクティブを使用します。</p>
1601    
1602  <ul>  <ul>
1603  <li>keep_domain プログラム名 from ドメイン名  <li>keep_domain プログラム名 from ドメイン名
# Line 1563  allow_network TCP accept @local-address Line 1606  allow_network TCP accept @local-address
1606  <li>keep_domain ドメイン名の最後のプログラム名  <li>keep_domain ドメイン名の最後のプログラム名
1607  </ul>  </ul>
1608    
1609  <p> from 以前が指定されていない場合は任意のプログラムが実行された場合に適用される。ドメイン名が &lt;kernel&gt; で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。</p>  <p> from 以前が指定されていない場合は任意のプログラムが実行された場合に適用されます。ドメイン名が &lt;kernel&gt; で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用されます。</p>
1610    
1611  <p>このディレクティブの目的は、不要なドメイン遷移の発生を抑制することでドメイン数とメモリ消費を抑えることである。</p>  <p>このディレクティブの目的は、不要なドメイン遷移の発生を抑制することでドメイン数とメモリ消費を抑えることである。</p>
1612    
1613  <p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_no_keep_domain">no_keep_domain</a></p>  <p>関連項目:<a href="#domain_transition">ドメイン遷移</a> <a href="#exception_policy_no_keep_domain">no_keep_domain</a></p>
1614    
1615  <h3><a name="exception_policy_no_keep_domain">no_keep_domain</a></h3>  <h3><a name="exception_policy_no_keep_domain">no_keep_domain</a></h3>
1616    
1617  <p>keep_domain の効力を打ち消すには、 no_keep_domain というディレクティブを指定する。</p>  <p>keep_domain の効力を打ち消すには、 no_keep_domain というディレクティブを指定します。</p>
1618    
1619  <ul>  <ul>
1620  <li>no_keep_domain プログラム名 from ドメイン名  <li>no_keep_domain プログラム名 from ドメイン名
# Line 1580  allow_network TCP accept @local-address Line 1623  allow_network TCP accept @local-address
1623  <li>no_keep_domain ドメイン名の最後のプログラム名  <li>no_keep_domain ドメイン名の最後のプログラム名
1624  </ul>  </ul>
1625    
1626  <p>このディレクティブはドメイン遷移を行わせたい場合に使用する。</p>  <p>このディレクティブはドメイン遷移を行わせたい場合に使用します。</p>
1627    
1628  <p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_keep_domain">keep_domain</a></p>  <p>関連項目:<a href="#domain_transition">ドメイン遷移</a> <a href="#exception_policy_keep_domain">keep_domain</a></p>
1629    
1630  <hr>  <hr>
1631    
1632  <h3><a name="profile">/proc/ccs/profile</a></h3>  <h3><a name="profile">/proc/ccs/profile</a></h3>
1633    
1634  <p>現在の制御レベルを取得または変更する。変更するためのツールとして setlevel と loadpolicy が用意されている。</p>  <p>現在の制御レベルを取得または変更します。変更するためのツールとして setlevel と loadpolicy が用意されている。</p>
1635  <p>(例)<br>  <p>(例)<br>
1636  cat /proc/ccs/profile<br>  cat /proc/ccs/profile<br>
1637  savepolicy -p<br>  savepolicy -p<br>
# Line 1599  echo 1-MAC_FOR_FILE=learning | loadpolic Line 1642  echo 1-MAC_FOR_FILE=learning | loadpolic
1642    
1643  <h3><a name="system_policy">/proc/ccs/system_policy</a></h3>  <h3><a name="system_policy">/proc/ccs/system_policy</a></h3>
1644    
1645  <p>現在の<a href="#system_policy">システムポリシー</a>を読み出しまたは追加または削除する。</p>  <p>現在の<a href="#system_policy">システムポリシ</a>を読み出しまたは追加または削除します。</p>
1646  <p>(例)<br>  <p>(例)<br>
1647  cat /proc/ccs/system_policy<br>  cat /proc/ccs/system_policy<br>
1648  savepolicy -s<br>  savepolicy -s<br>
# Line 1610  echo 'delete allow_mount /proc /proc/ pr Line 1653  echo 'delete allow_mount /proc /proc/ pr
1653    
1654  <h3><a name="domain_policy">/proc/ccs/domain_policy</a></h3>  <h3><a name="domain_policy">/proc/ccs/domain_policy</a></h3>
1655    
1656  <p>現在の<a href="#domain_policy">ドメインポリシー</a>を読み出しまたは追加または削除する。</p>  <p>現在の<a href="#domain_policy">ドメインポリシ</a>を読み出しまたは追加または削除します。</p>
1657  <p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成される)<br>  <p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成される)<br>
1658  printf "&lt;kernel&gt; /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d</p>  printf "&lt;kernel&gt; /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d</p>
1659  <p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成されない)<br>  <p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成されない)<br>
1660  printf "select &lt;kernel&gt; /sbin/init\nallow_read /etc/passwd\n"  | loadpolicy -d</p>  printf "select &lt;kernel&gt; /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d</p>
1661  <p>(例)ドメインを選択してアクセス許可を削除<br>  <p>(例)ドメインを選択してアクセス許可を削除<br>
1662  printf "select &lt;kernel&gt; /sbin/init\ndelete allow_read /etc/passwd\ndelete allow_read /etc/shadow\n"  | loadpolicy -d</p>  printf "select &lt;kernel&gt; /sbin/init\ndelete allow_read /etc/passwd\ndelete allow_read /etc/shadow\n" | loadpolicy -d</p>
1663  <p>(例)特定のドメインを削除<br>  <p>(例)特定のドメインを削除<br>
1664  printf "delete &lt;kernel&gt; /sbin/init\n"  | loadpolicy -d</p>  printf "delete &lt;kernel&gt; /sbin/init\n" | loadpolicy -d</p>
1665  <p>(例)ドメイン別ポリシーの読み出し<br>  <p>(例)ドメインポリシの読み出し<br>
1666  cat /proc/ccs/domain_policy</p>  cat /proc/ccs/domain_policy</p>
1667    
1668  <h3><a name="exception_policy">/proc/ccs/exception_policy</a></h3>  <h3><a name="exception_policy">/proc/ccs/exception_policy</a></h3>
1669    
1670  <p>現在の<a href="#exception_policy">例外ポリシー</a>を読み出しまたは追加または削除する。</p>  <p>現在の<a href="#exception_policy">例外ポリシ</a>を読み出しまたは追加または削除します。</p>
1671  <p>(例)<br>  <p>(例)<br>
1672  echo 'file_pattern /proc/\$/status' | loadpolicy -e<br>  echo 'file_pattern /proc/\$/status' | loadpolicy -e<br>
1673  echo 'delete file_pattern /proc/\$/status' | loadpolicy -e<br>  echo 'delete file_pattern /proc/\$/status' | loadpolicy -e<br>
# Line 1632  cat /proc/ccs/exception_policy</p> Line 1675  cat /proc/ccs/exception_policy</p>
1675    
1676  <h3><a name="query">/proc/ccs/query</a></h3>  <h3><a name="query">/proc/ccs/query</a></h3>
1677    
1678  <p>強制モードで動作中にポリシー違反が発生した場合に、そのアクセス要求を個別に許可するかどうかの指定を行うために使用する。 ALLOW_ENFORCE_GRACE=enabled に設定されているプロファイルが割り当てられているドメインに対して強制モードでポリシー違反が発生した場合、 ccs-queryd を用いて対話的に諾否を指定できる。</p>  <p>強制モードで動作中にポリシ違反が発生した場合に、そのアクセス要求を個別に許可するかどうかの指定を行うために使用します。 ALLOW_ENFORCE_GRACE=enabled に設定されているプロファイルが割り当てられているドメインに対して強制モードでポリシ違反が発生した場合、 ccs-queryd を用いて対話的に諾否を指定できます。</p>
1679    
1680  <h3><a name="manager">/proc/ccs/manager</a></h3>  <h3><a name="manager">/proc/ccs/manager</a></h3>
1681    
1682  <p>ポリシーの読み書きを行えるプログラムまたはドメインの一覧を取得または追加する。</p>  <p>ポリシの読み書きを行えるプログラムまたはドメインの一覧を取得または追加します。</p>
1683    
1684  <h3><a name=".domain_status">/proc/ccs/.domain_status</a></h3>  <h3><a name=".domain_status">/proc/ccs/.domain_status</a></h3>
1685    
1686  <p>setprofile コマンドが行単位での処理を行いやすくするために domain_policy の内容からプロファイル番号とドメイン名の部分だけを抽出したもの。DBMSのビューに相当する機能を提供する。</p>  <p>setprofile コマンドが行単位での処理を行いやすくするために domain_policy の内容からプロファイル番号とドメイン名の部分だけを抽出したもの。DBMSのビューに相当する機能を提供します。</p>
1687    
1688  <h3><a name="meminfo">/proc/ccs/meminfo</a></h3>  <h3><a name="meminfo">/proc/ccs/meminfo</a></h3>
1689    
1690  <p>TOMOYO Linuxがポリシーを保持するために使用しているカーネルのメモリ情報を取得する。</p>  <p>TOMOYO Linuxがポリシを保持するために使用しているカーネルのメモリ情報を取得します。</p>
1691  <p>(例)<br>  <p>(例)<br>
1692  cat /proc/ccs/meminfo<br></p>  cat /proc/ccs/meminfo<br></p>
1693    
1694  <h3><a name="grant_log">/proc/ccs/grant_log</a></h3>  <h3><a name="grant_log">/proc/ccs/grant_log</a></h3>
1695    
1696  <p>ドメイン別ポリシーに対するアクセス許可ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_GRANT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。</p>  <p>ドメインポリシに対するアクセス許可ログを取得します。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_GRANT_LOG件までです。 それ以上は記録されないので、随時読み出すようにする必要がある。</p>
1697  <p>(例)<br>  <p>(例)<br>
1698  cat /proc/ccs/grant_log</p>  cat /proc/ccs/grant_log</p>
1699    
1700  <h3><a name="reject_log">/proc/ccs/reject_log</a></h3>  <h3><a name="reject_log">/proc/ccs/reject_log</a></h3>
1701    
1702  <p>ドメイン別ポリシーに対するアクセス拒否ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_REJECT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。</p>  <p>ドメインポリシに対するアクセス拒否ログを取得します。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_REJECT_LOG件までです。 それ以上は記録されないので、随時読み出すようにする必要がある。</p>
1703  <p>(例)<br>  <p>(例)<br>
1704  cat /proc/ccs/reject_log</p>  cat /proc/ccs/reject_log</p>
1705    
1706  <h3><a name="self_domain">/proc/ccs/self_domain</a></h3>  <h3><a name="self_domain">/proc/ccs/self_domain</a></h3>
1707    
1708  <p>呼び出し元プロセスが属しているドメインの名前を取得する。</p>  <p>呼び出し元プロセスが属しているドメインの名前を取得します。</p>
1709  <p>(例)<br>  <p>(例)<br>
1710  cat /proc/ccs/self_domain</p>  cat /proc/ccs/self_domain</p>
1711    
1712  <h3><a name=".process_status">/proc/ccs/.process_status</a></h3>  <h3><a name=".process_status">/proc/ccs/.process_status</a></h3>
1713    
1714  <p>ccstree コマンド(「現在動作中のプロセス」と「そのプロセスが属しているドメイン」と「そのドメインに割り当てられているプロファイル番号」を pstree のように一覧表示する)のためのインタフェース。例外的にポリシーマネージャとして登録されていないプログラムでも書き込みを行える。</p>  <p>ccstree コマンド(「現在動作中のプロセス」と「そのプロセスが属しているドメイン」と「そのドメインに割り当てられているプロファイル番号」を pstree のように一覧表示する)のためのインタフェース。例外的にポリシマネージャとして登録されていないプログラムでも書き込みを行える。</p>
1715    
1716  <h3><a name=".updates_counter">/proc/ccs/.updates_counter</a></h3>  <h3><a name=".updates_counter">/proc/ccs/.updates_counter</a></h3>
1717    
1718  <p>ポリシーの変更を検出するためのカウンタ。参照されるたびに 0 にリセットされる。ポリシーの更新を監視するプログラムのためのインタフェース。</p>  <p>ポリシの変更を検出するためのカウンタです。参照されるたびに 0 にリセットされます。ポリシの更新を監視するプログラムのためのインタフェースです。</p>
1719    
1720  <h3><a name="version">/proc/ccs/version</a></h3>  <h3><a name="version">/proc/ccs/version</a></h3>
1721    
1722  <p>TOMOYO Linux のバージョン番号を取得するためのインタフェース。</p>  <p>TOMOYO Linux のバージョン番号を取得するためのインタフェースです。</p>
1723  <p>(例)<br>  <p>(例)<br>
1724  cat /proc/ccs/version</p>  cat /proc/ccs/version</p>
1725    
1726  <h2><a name="features_for_intermediate">中級者向けの機能</a></h2>  <h2><a name="features_for_advanced">6. 便利な機能</a></h2>
   
 <h3><a name="sleep_penalty">ポリシー違反時のペナルティ指定</a></h3>  
   
 <p>強制モードでポリシー違反が発生した場合に、ポリシー違反の原因となったプロセスを一定時間スリープ状態にさせることができます。</p>  
   
 <table border="1">  
 <tr><td>/proc/ccs/profile での指定例</td><td>意味</td></tr>  
 <tr><td>3-SLEEP_PERIOD=1</td><td>プロファイル 3 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、0.1秒間スリープさせる。</td></tr>  
 <tr><td>4-SLEEP_PERIOD=10</td><td>プロファイル 4 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、1秒間スリープさせる。</td></tr>  
 </table>  
   
 <p>この機能は、無限ループの中でポリシー違反が発生した場合に、CPU使用率が100%になってしまうのを回避するための安全装置です。通常は0.1秒間スリープさせるだけで充分です。</p>  
1727    
1728  <p>この機能は、許可されていないホストからの TCP 接続要求や UDP パケットを攻撃者が故意に送りつけることでポリシー違反を発生させることでサービスを長時間スリープ状態にさせることにより、許可されているホストからの TCP 接続要求や UDP パケットの処理を大幅に遅延させるという攻撃が成立してしまうのを回避するために、ネットワークの受信系の操作に対しては機能しないようになっています。</p>  <h3><a name="conditional_acl">6.1 条件付きアクセス許可の指定</a></h3>
   
 <h3><a name="conditional_acl">条件付きアクセス許可の指定</a></h3>  
1729    
1730  <p>アクセス許可にユーザID等に基づいた条件を付加することができます。条件は個々のアクセス許可の末尾に " if " 句を追加する形で指定します。</p>  <p>アクセス許可にユーザID等に基づいた条件を付加することができます。条件は個々のアクセス許可の末尾に " if " 句を追加する形で指定します。</p>
1731    
# Line 1759  cat /proc/ccs/version</p> Line 1788  cat /proc/ccs/version</p>
1788    
1789  <p>exec はプログラム実行時(つまり<a href="#domain_policy_allow_execute">allow_execute</a>)に限り指定できます。</p>  <p>exec はプログラム実行時(つまり<a href="#domain_policy_allow_execute">allow_execute</a>)に限り指定できます。</p>
1790    
1791  <h2><a name="features_for_advanced">上級者向けの機能</a></h2>  <h3><a name="stateful_acl">6.2 ステートフルなアクセス許可の指定</a></h3>
   
 <h3><a name="stateful_acl">ステートフルなアクセス許可の指定</a></h3>  
1792    
1793  <p>TOMOYO Linux はユーザランドアプリケーションの修正を行わないため、プログラムの実行を伴わずにアクセス可能な資源の範囲を変更することはできません。しかし、例えば接続元クライアントのIPアドレスによってアクセスの可否を切り替えたいという場合があります。そのような場合に対応するため、プロセス毎に状態変数を割り当てることができ、条件付きアクセス許可の指定で使えるようになっています。</p>  <p>TOMOYO Linux はユーザランドアプリケーションの修正を行わないため、プログラムの実行を伴わずにアクセス可能な資源の範囲を変更することはできません。しかし、例えば接続元クライアントのIPアドレスによってアクセスの可否を切り替えたいという場合があります。そのような場合に対応するため、プロセス毎に状態変数を割り当てることができ、条件付きアクセス許可の指定で使えるようになっています。</p>
1794    
# Line 1776  cat /proc/ccs/version</p> Line 1803  cat /proc/ccs/version</p>
1803    
1804  <table border="1">  <table border="1">
1805  <tr><td>使用例</td><td>意味</td></tr>  <tr><td>使用例</td><td>意味</td></tr>
1806  <tr><td>allow_network TCP accept @TRUSTED_HOSTS 1024-65535 ; set task.state[0]=1</td><td>クライアントが @TRUSTED_HOSTS である場合には、 state[0] に 1 を設定する。</td></tr>  <tr><td>allow_network TCP accept @TRUSTED_HOSTS 1024-65535 ; set task.state[0]=1</td><td>クライアントが @TRUSTED_HOSTS である場合には、 state[0] に 1 を設定します。</td></tr>
1807  <tr><td>allow_network TCP accept @UNTRUSTED_HOSTS 1024-65535 ; set task.state[0]=0</td><td>クライアントが @UNTRUSTED_HOSTS である場合には、 state[0] に 0 を設定する。</td></tr>  <tr><td>allow_network TCP accept @UNTRUSTED_HOSTS 1024-65535 ; set task.state[0]=0</td><td>クライアントが @UNTRUSTED_HOSTS である場合には、 state[0] に 0 を設定します。</td></tr>
1808  <tr><td>allow_execute /bin/bash if task.state[0]=1</td><td>state[0] が 1 の場合は、 /bin/bash の実行を許可する。</td></tr>  <tr><td>allow_execute /bin/bash if task.state[0]=1</td><td>state[0] が 1 の場合は、 /bin/bash の実行を許可します。</td></tr>
1809  <tr><td>allow_execute /sbin/nologin if task.state[0]=0</td><td>state[0] が 0 の場合は、 /sbin/nologin の実行を許可する。</td></tr>  <tr><td>allow_execute /sbin/nologin if task.state[0]=0</td><td>state[0] が 0 の場合は、 /sbin/nologin の実行を許可します。</td></tr>
1810  <tr><td>allow_execute /etc/passwd if task.state[2]=0 ; set task.state[2]=1</td><td>state[2] が 0 の場合は /etc/passwd の読み込みモードでのオープンを許可し、その後 state[2] に 1 を設定する。</td></tr>  <tr><td>allow_execute /etc/passwd if task.state[2]=0 ; set task.state[2]=1</td><td>state[2] が 0 の場合は /etc/passwd の読み込みモードでのオープンを許可し、その後 state[2] に 1 を設定します。</td></tr>
1811  </table>  </table>
1812    
1813  <p>状態変数を使用する際には、以下の点に注意してください。</p>  <p>状態変数を使用する際には、以下の点に注意してください。</p>
1814    
1815  <ul>  <ul>
1816  <li>プロセスのドメインはプログラムの実行によって自動的に変更されるのに対して、プロセスの状態変数は明示的に" ; set " という句で指定されない限り変更されない。そのため、状態変数の戻し忘れに注意。</li>  <li>プロセスのドメインはプログラムの実行によって自動的に変更されるのに対して、プロセスの状態変数は明示的に" ; set " という句で指定されない限り変更されない。そのため、状態変数の戻し忘れに注意。</li>
1817  <li>状態変数の設定はポリシーのチェックにより許可された時点で行われる。そのため、メモリ不足などポリシーのチェック以降のエラーによって、状態変数が変更されたけれどもアクセス要求は処理されなかったという状況が発生しうる。</li>  <li>状態変数の設定はポリシのチェックにより許可された時点で行われる。そのため、メモリ不足などポリシのチェック以降のエラーによって、状態変数が変更されたけれどもアクセス要求は処理されなかったという状況が発生しうる。</li>
1818  <li>上記の @TRUSTED_HOSTS と @UNTRUSTED_HOSTS の両方に含まれていた場合、先に一致したほうの状態変数が使われてしまう。そのため、順番に依存するアクセス許可を定義しないように注意。</li>  <li>上記の @TRUSTED_HOSTS と @UNTRUSTED_HOSTS の両方に含まれていた場合、先に一致したほうの状態変数が使われてしまう。そのため、順番に依存するアクセス許可を定義しないように注意。</li>
1819  </ul>  </ul>
1820    
1821  <h3><a name="denied_execute_handler_penalty">許可されていないプログラムの実行が要求された場合の代替処理指定</a></h3>  <h3><a name="sleep_penalty">6.3 ポリシ違反時のペナルティ指定</a></h3>
1822    
1823  <p>TOMOYO Linux では、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、不要なプログラムの実行を拒否するという振る舞いだけでなく、それ以外の振る舞いを行うこともできます。</p>  <p>強制モードでポリシ違反が発生した場合に、ポリシ違反の原因となったプロセスを一定時間スリープ状態にさせることができます。</p>
1824    
1825  <p>強制モードに於いて allow_execute 構文により許可されていないプログラムの実行が要求された場合、デフォルトではプログラムの実行を拒否します。しかし、あるプログラムからどのプログラムの実行を許可する必要があるかを把握済みであるという前提があれば、プロセスが正常な動作をしている限りに於いて許可されていないプログラムの実行が要求されることは無いので、許可されていないプログラムの実行が要求されたということはプロセスが正常な動作をしていない(つまり、プロセスにとっては制御を失った状態である)とみなすことができます。</p>  <table border="1">
1826    <tr><td>/proc/ccs/profile での指定例</td><td>意味</td></tr>
1827    <tr><td>3-SLEEP_PERIOD=1</td><td>プロファイル 3 が割り当てられているプロセスが強制モードに於いてポリシ違反を発生させた場合、0.1秒間スリープさせる。</td></tr>
1828    <tr><td>4-SLEEP_PERIOD=10</td><td>プロファイル 4 が割り当てられているプロセスが強制モードに於いてポリシ違反を発生させた場合、1秒間スリープさせる。</td></tr>
1829    </table>
1830    
1831  <p>攻撃者はバッファオーバーフローなどのセキュリティホールを攻撃することでプロセスの制御を奪い、シェルなどのコマンドの実行を要求してきます。もし、そのプロセスからシェルの実行を許可する必要が無い(すなわち allow_execute /bin/bash のようなアクセス許可を与える必要が無い)のであれば、シェルの実行が要求された時点で既にプロセスにとっては制御を失っていると考えることができます。</p>  <p>この機能は、無限ループの中でポリシ違反が発生した場合に、CPU使用率が100%になってしまうのを回避するための安全装置です。通常は0.1秒間スリープさせるだけで充分です。</p>
1832    
1833  <p>通常、許可されていないプログラムの実行が要求された場合は、その要求を拒否するだけです。しかし、制御を失っているプロセスから要求されたプログラムの実行要求を拒否したところで、そのプロセスの制御が取り戻される(つまり、正常な動作をするようになる)とは考えられません。しかし、プログラムを実行するということは、現在動作中のプロセスを新しいプログラムに置き換えることで、制御を新しいプログラムに譲渡することを意味します。つまり、あるプロセスがバッファオーバーフローなどにより制御を失っていたとしても、プログラムを実行することにより、そのプロセスの制御が取り戻されるわけです。</p>  <p>この機能は、許可されていないホストからの TCP 接続要求や UDP パケットを攻撃者が故意に送りつけることでポリシ違反を発生させることでサービスを長時間スリープ状態にさせることにより、許可されているホストからの TCP 接続要求や UDP パケットの処理を大幅に遅延させるという攻撃が成立してしまうのを回避するために、ネットワークの受信系の操作に対しては機能しないようになっています。</p>
1834    
1835  <p>攻撃者の手によって制御を失ったプロセスからプログラムが実行された後の制御は、どのプログラムが実行されたかによって決まります。シェルが実行された場合には、シェルはユーザが要求したとおりに処理を実行してしまうため、プログラムの実行を要求したプロセスの所有者である攻撃者の手に委ねられてしまうわけです。しかし、何もせずに終了するようなプログラム(例えば /bin/true )が実行された場合には、プロセスの制御が攻撃者の手に委ねられてしまうことはありません。</p>  <h3><a name="execute_handler">6.4 プログラムの実行可否をカーネルの外部で判断</a></h3>
1836    
1837  <p>このように、攻撃者の手によって本来許可する必要の無いプログラムの実行が要求されるという出来事は、見方を変えると、攻撃者自身が制御を取り戻すためのチャンスを与えてくれていると考えることができます。そこで、 TOMOYO Linux では、許可されていないプログラムの実行が要求された場合、その要求を拒否する代わりに他のプログラムを実行するための機構を提供しています。この機構を用いて何をするかはシステム管理者の自由です。</p>  <p>TOMOYO Linuxでは、原則としてポリシに従ってプログラムの実行可否を制御します。プログラム実行時のパラメータをチェックしたい場合には、<a href="#conditional_acl">条件付きアクセス許可の指定</a>で説明したようにexec.argvやexec.envpを使ってチェックを行うことができます。しかし、<a href="#conditional_acl">条件付きアクセス許可の指定</a>では、単純なパターンマッチしかサポートされておらず、また、どのようなプログラムの実行を許可するかを予め指定しておく必要があります。</p>
1838    
1839  <p>例えば、シェルの実行要求を /bin/true の実行要求に差し替えてしまうことで、そのプロセスを直ちに強制終了させることができます。</p>  <p>そこで、TOMOYO Linux 1.6.0では<a href="#domain_policy_execute_handler">execute_handler</a>という仕組みが導入されました。この仕組みは、プログラムの実行可否をカーネルが判断するのではなく、<a href="#domain_policy_execute_handler">execute_handler</a>により指定されたプログラムが判断し、プログラムの実行を許可すべきと判断した場合には実際にプログラムを実行するという動作をします。</p>
1840    
1841  <p>例えば、シェルの実行要求をハニーポットクライアントプログラムの実行要求に差し替えてしまうことで、攻撃者がどのようなリクエストを行うかを観察することができます。</p>  <p>Linuxに於いては、プログラムを実行するという動作は、プログラムの実行を要求したプロセスを上書きするという動作であり、プログラムの実行に成功した場合にはプログラムの実行を要求したプロセスに制御が戻ることはありません。つまり、要求されたプログラムの実行に失敗した場合にしか、プログラムの実行を要求したプロセスに対して、要求されたプログラムが実行されなかったことが通知されません。<br>
1842    例えば、プログラムAとして動作しているプロセスがプログラムBの実行を要求する場合を考えてみます。<br>
1843    プログラムAとして動作しているプロセスがプログラムBの実行を要求すると、カーネルが「プログラムAとして動作しているプロセスからプログラムBを実行することは適切であるかどうか」をポリシを照合することで判断し、適切であると判断された場合には「プログラムAとして動作しているプロセスをプログラムBで上書き」し、適切では無いと判断された場合には「プログラムAとして動作しているプロセスにプログラムBの実行が認められていないことを通知」します。</p>
1844    
1845  <p>例えば、そのログインセッションを強制終了させることができます。</p>  <p><a href="#domain_policy_execute_handler">execute_handler</a>を指定した場合、
1846    execute_handlerとして指定されたプログラムCがこの動作に介在します。<br>
1847    プログラムAとして動作しているプロセスがプログラムBの実行を要求すると、プログラムCに「プログラムAとして動作しているプロセスからプログラムBを実行することは適切であるかどうか」を判断してもらうために「プログラムAとして動作しているプロセスをプログラムCで上書き」します。プログラムCとして動作するようになったプロセスが「プログラムAとして動作していたプロセスからプログラムBを実行することは適切であるかどうか」を判断し、適切であると判断した場合には「プログラムCとして動作しているプロセスをプログラムBで上書き」し、適切では無いと判断された場合には「プログラムCとして動作しているプロセスをプログラムBで上書きせずに終了」します。</p>
1848    
1849  <p>例えば、要求されたコマンドがどのパッケージに含まれているかを教えてくれる Ubuntu の command-not-found パッケージのように、「You are not permitted to execute this program.」のような警告を表示することができます。</p>  <p>このように、プログラムBの実行を要求したプログラムAとして動作していたプロセスがに対して、プログラムBの実行に失敗したことを通知する手段を放棄することになるため、プログラムBの実行を要求したプログラムAとして動作していたプロセスが、プログラムBが実行されなかったという通知を受けることができなくなるという副作用が発生します。<br>
1850    しかし、たとえ<a href="#domain_policy_execute_handler">execute_handler</a>を指定していない場合であっても、「共有ライブラリの読み込みができなかった」「 KILL シグナルを受信した」「メモリ不足になり OOM killer によって強制終了させられた」など、様々な要因によって「実行には成功したが期待された動作を始める前に終了してしまった」という状況が起こりえます。つまり、「プログラムの実行が失敗しなかった」ということと「要求されたプログラムが期待した動作を始めた」ということの間には、不確定要素が存在します。<br>
1851    そう考えると、「プログラムの実行に失敗したという通知が無い限りプログラムは期待された動作を始める」という保証は最初から存在しないわけなので、<a href="#domain_policy_execute_handler">execute_handler</a>により指定されたプログラムCが、プログラムBの実行に失敗したことをプログラムBの実行を要求したプログラムAとして動作していたプロセスに通知できなかったという結果になったとしても、容認できる範囲であると言えると思います。</p>
1852    
1853  <p>例えば、攻撃者の接続元IPアドレスを割り出して、ファイアウォールの設定を変更することができます。</p>  
1854    <p>TOMOYO Linux は、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、正常な動作をしている限り、ポリシで許可されていないプログラムの実行要求は起こらないはずだと仮定すると、全てのプログラムの実行要求をとりあえず受理して構わないと考えることができます。もしも受理すべきではないプログラムの実行要求が発生した場合、<a href="#domain_policy_denied_execute_handler">denied_execute_handler</a>の機能を使うことで要求を拒否する代わりにそのプロセスを強制終了させるなどの行動を起こすことができます。つまり、カーネルの内部でプログラムの実行可否の判断を行わなくても構わないということです。</p>
1855    
1856    <p>そこで、ドメインに対して <a href="#domain_policy_execute_handler">execute_handler</a>キーワードを指定しておくことで、そのドメインから発生する全てのプログラムの実行可否の判断をカーネル外部のプログラムに委ねることができるようになります。</p>
1857    <p>カーネルの内部では利用可能なライブラリが少ない上に連続したメモリ領域の割り当てが失敗する可能性が高くなりますが、
1858    カーネルの外部であれば豊富なライブラリを使ってメモリ割り当ての限界を心配せずに詳細なチェックが可能になります。そこで、<a href="#domain_policy_execute_handler">execute_handler</a>で指定したプログラムにプログラム実行時のパラメータをチェックしてもらい、適切であればプログラムを実行してもらうようにすることができます。</p>
1859    
1860    <p>この方式の副作用は、プログラムの実行を拒否すべきと判断した場合に、プログラムの実行を要求したプロセスに通知する方法が無い点です。しかし、自由にカスタマイズできるので、 ssh 等を用いて遠隔地のマシンに問い合わせをしながらしながら判断することも可能です。</p>
1861    
1862  <p>この機能を使うには、以下のように指定します。</p>  <p>この機能を使うには、以下のように指定します。</p>
1863    
1864  <table border="1">  <table border="1">
1865  <tr><td>/proc/ccs/profile の例</td><td>/proc/ccs/domain_policy の例</td><td>意味</td></tr>  <tr><td>/proc/ccs/domain_policy の例</td><td>意味</td></tr>
1866  <tr><td>3-MAC_FOR_FILE=enforcing</td><td>use_profile 3<br>denied_execute_handler /bin/true</td><td>プロファイル 3 が割り当てられているドメインに属しているプロセスが、許可されていないプログラムの実行を要求した場合、代わりに /bin/true を実行する。</td></tr>  <tr><td>execute_handler /usr/sbin/check-and-exec</td><td>このドメインに属しているプロセスがプログラムの実行を要求した場合、要求されたプログラムを実行する代わりに/usr/sbin/check-and-execを実行します。/usr/sbin/check-and-execはパラメータをチェックし、妥当と判断した場合には要求されたプログラムを実行します。</td></tr>
1867  </table>  </table>
1868    
1869  <p>denied_execute_handlerで指定されたプログラムは、以下のパラメータを受け取ります。</p>  <p>execute_handlerで指定されたプログラムは、以下のパラメータを受け取ります。<a href="#access_logs">アクセスログについて</a>で説明した、 allow_execute のログと比較してみてください。</p>
1870    
1871  <ul>  <ul>
1872  <li>argv[0] には、denied_execute_handlerで指定されたプログラムのパス名が入っています。</li>  <li>argv[0] には、execute_handlerで指定されたプログラムのパス名が入っています。</li>
1873  <li>argv[1] には、許可されていないプログラムの実行を要求したプロセスのドメイン名が入っています。</li>  <li>argv[1] には、プログラムの実行を要求したプロセスのドメイン名が入っています。</li>
1874  <li>argv[2] には、許可されていないプログラムの実行を要求したプロセスのパス名が入っています。</li>  <li>argv[2] には、プログラムの実行を要求したプロセスのパス名が入っています。</li>
1875  <li>argv[3] には、許可されていないプログラムの実行を要求したプロセスの情報が入っています。</li>  <li>argv[3] には、プログラムの実行を要求したプロセスの情報が入っています。</li>
1876  <li>argv[4] には、許可されなかったプログラムのパス名が入っています。</li>  <li>argv[4] には、実行が要求されたプログラムのパス名が入っています。</li>
1877  <li>argv[5] には、プログラム実行時の引数の数が入っています。</li>  <li>argv[5] には、プログラム実行要求時の引数の数が入っています。</li>
1878  <li>argv[6] には、プログラム実行時の環境変数の数が入っています。</li>  <li>argv[6] には、プログラム実行要求時の環境変数の数が入っています。</li>
1879  <li>argv[7] から argv[6 + argc] には、呼び出し元プロセスが渡した argv[] の内容が入っています。</li>  <li>argv[7] から argv[6 + argc] には、呼び出し元プロセスが渡した argv[] の内容が入っています。</li>
1880  <li>argv[7 + argc] から argv [6 + argc + envc] には、呼び出し元プロセスが渡した envp[] の内容が入っています。</li>  <li>argv[7 + argc] から argv [6 + argc + envc] には、呼び出し元プロセスが渡した envp[] の内容が入っています。</li>
1881  <li>環境変数 envp[] は全てクリアされます。</li>  <li>環境変数 envp[] は全てクリアされます。</li>
1882  <li>標準入出力などは呼び出し元プロセスのものを引き継ぎます。</li>  <li>標準入出力などは呼び出し元プロセスのものを引き継ぎます。</li>
1883  </ul>  </ul>
1884    
 <p>パラメータを表示するサンプルプログラムは以下のようになります。</p>  
   
 <table border="1">  
 <tr><td><pre>  
 #! /bin/sh  
 # Don't invoke this program from the command line.  
 # This program is invoked by the kernel, with all environment variables cleared.  
 # You might need to set environment variable PATH to run this program.  
 #  
 [ $# -ge 6 ] || exit 1  
   
 echo "----- Domain information -----"  
 echo $1  
 shift  
   
 echo "----- Program information -----"  
 echo $1  
 shift  
   
 echo "----- Process information -----"  
 echo $1  
 shift  
   
 echo "----- Rejected Program information -----"  
 echo $1  
 shift  
   
 ARGC=$1  
 shift  
 echo "----- Number of commandline arguments -----"  
 echo $ARGC  
   
 ENVC=$1  
 shift  
 echo "----- Number of environment variables -----"  
 echo $ENVC  
   
 echo "----- argv[] information -----"  
   
 while [ $ARGC -gt 0 ]  
 do  
   echo $1  
   shift  
   ARGC=`expr $ARGC - 1`  
 done  
   
 echo "----- envp[] information -----"  
   
 while [ $ENVC -gt 0 ]  
 do  
   echo $1  
   shift  
   ENVC=`expr $ENVC - 1`  
 done  
   
 exit 1  
 </pre></td></tr>  
 </table>  
   
1885  <p>この機能を使用する際には、以下の点に注意してください。</p>  <p>この機能を使用する際には、以下の点に注意してください。</p>
1886    
1887  <ul>  <ul>
1888  <li>denied_execute_handlerやexecute_handlerで指定されたプログラムに対して実行許可(<a href="#domain_policy_allow_execute">allow_execute</a>)を与える必要はありませんし、与えるべきではありません。</li>  <li>execute_handlerで指定されたプログラムに対して実行許可(<a href="#domain_policy_allow_execute">allow_execute</a>)を与える必要はありませんし、与えるべきではありません。</li>
1889  <li>プロセスがchroot内部の環境で動作している場合、denied_execute_handlerやexecute_handlerで指定されたプログラムが見つからないために実行されない場合があります。これは、プロセスがchroot内部の環境で動作している場合に、chroot外部の環境にあるプログラムを実行できてしまうと危険なので、denied_execute_handlerやexecute_handlerで指定されたプログラムは、プロセスの名前空間のルートディレクトリではなく、プロセスのルートディレクトリから検索するようになっているためです。</li>  <li>プロセスがchroot内部の環境で動作している場合、execute_handlerで指定されたプログラムが見つからないために実行されない場合があります。これは、プロセスがchroot内部の環境で動作している場合に、chroot外部の環境にあるプログラムを実行できてしまうと危険なので、execute_handlerで指定されたプログラムは、プロセスの名前空間のルートディレクトリではなく、プロセスのルートディレクトリから検索するようになっているためです。</li>
1890  <li>denied_execute_handlerやexecute_handlerで指定されたプログラムが動作するためのドメインが存在しない場合、実行されません。そのため、例えば&lt;kernel&gt;直下にdenied_execute_handlerやexecute_handlerで指定されたプログラム用のドメインを作成して、そのプログラムを<a href="#exception_policy_initialize_domain">initialize_domain</a>キーワードで指定するなどの準備をしてください。</li>  <li>execute_handlerで指定されたプログラムが動作するためのドメインが存在しない場合、実行されません。そのため、例えば&lt;kernel&gt;直下にexecute_handlerで指定されたプログラム用のドメインを作成して、そのプログラムを<a href="#exception_policy_initialize_domain">initialize_domain</a>キーワードで指定するなどの準備をしてください。</li>
1891  <li>denied_execute_handlerやexecute_handlerで指定されたプログラムは環境変数の影響を受けるのを避けるため、全ての環境変数の内容をクリアした状態で起動されます。そのため、環境変数 PATH 等が設定されていないので、外部コマンドを呼び出す場合には注意してください。また、denied_execute_handlerやexecute_handlerで指定されたプログラムが動作するドメインにも強制モード用のプロファイルを割り当てておくことを推奨します。</li>  <li>execute_handlerで指定されたプログラムは環境変数の影響を受けるのを避けるため、全ての環境変数の内容をクリアした状態で起動されます。そのため、環境変数 PATH 等が設定されていないので、外部コマンドを呼び出す場合には注意してください。また、execute_handlerで指定されたプログラムが動作するドメインにも強制モード用のプロファイルを割り当てておくことを推奨します。</li>
1892  </ul>  </ul>
1893    
1894    <p>ccs-tools のソースパッケージには、 audit-exec-param.c というサンプルプログラムが入っています。ご自由に改造してお使いください。</p>
1895  <p>この機能は、機構を提供しているだけです。この機構を活用できるかどうかはあなた次第です。</p>  <p>この機能は、機構を提供しているだけです。この機構を活用できるかどうかはあなた次第です。</p>
1896    
1897  <h3><a name="always_denied_execute_handler">プログラムの実行可否をカーネルの外部で判断</a></h3>  <h3><a name="denied_execute_handler">6.5 許可されていないプログラムの実行が要求された場合の代替処理指定</a></h3>
1898    
1899  <p><a href="#denied_execute_handler_penalty">許可されていないプログラムの実行が要求された場合の代替処理指定</a>で述べたとおり、正常な動作をしている限り、ポリシーで許可されていないプログラムの実行要求は起こらないはずだと仮定すると、全てのプログラムの実行要求を受理して構わないと考えることができます。もしも受理すべきではないプログラムの実行要求が発生した場合、<a href="#domain_policy_denied_execute_handler">denied_execute_handler</a>の機能を使うことで要求を拒否する代わりにそのプロセスを強制終了させるなどの行動を起こすことができます。つまり、カーネルの内部でプログラムの実行可否の判断を行わなくても構わないということです。</p>  <p>TOMOYO Linux では、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、不要なプログラムの実行を拒否するという振る舞いだけでなく、それ以外の振る舞いを行うこともできます。</p>
1900    
1901  <p>そこで、ドメインに対して <a href="#domain_policy_execute_handler">execute_handler</a>キーワードを指定しておくことで、そのドメインから発生する全てのプログラムの実行可否の判断をカーネル外部のプログラムに委ねることができるようになります。</p>  <p>強制モードに於いて allow_execute 構文により許可されていないプログラムの実行が要求された場合、デフォルトではプログラムの実行を拒否します。しかし、あるプログラムからどのプログラムの実行を許可する必要があるかを把握済みであるという前提があれば、プロセスが正常な動作をしている限りに於いて許可されていないプログラムの実行が要求されることは無いので、許可されていないプログラムの実行が要求されたということはプロセスが正常な動作をしていない(つまり、プロセスにとっては制御を失った状態である)とみなすことができます。</p>
 <p>カーネルの内部では利用可能なライブラリが少ない上に連続したメモリ領域の割り当てが失敗する可能性が高くなりますが、  
 カーネルの外部であれば豊富なライブラリを使ってメモリ割り当ての限界を心配せずに詳細なチェックが可能になります。そこで、<a href="#domain_policy_execute_handler">execute_handler</a>で指定したプログラムにプログラム実行時のパラメータをチェックしてもらい、適切であればプログラムを実行してもらうようにすることができます。</p>  
1902    
1903  <p>この方式の副作用は、プログラムの実行を拒否すべきと判断した場合に、プログラムの実行を要求したプロセスに通知する方法が無い点です。しかし、自由にカスタマイズできるので、 ssh 等を用いて遠隔地のマシンに問い合わせをしながらしながら判断することも可能です。</p>  <p>攻撃者はバッファオーバーフローなどのセキュリティホールを攻撃することでプロセスの制御を奪い、シェルなどのコマンドの実行を要求してきます。もし、そのプロセスからシェルの実行を許可する必要が無い(すなわち allow_execute /bin/bash のようなアクセス許可を与える必要が無い)のであれば、シェルの実行が要求された時点で既にプロセスにとっては制御を失っていると考えることができます。</p>
1904    
1905    <p>通常、許可されていないプログラムの実行が要求された場合は、その要求を拒否するだけです。しかし、制御を失っているプロセスから要求されたプログラムの実行要求を拒否したところで、そのプロセスの制御が取り戻される(つまり、正常な動作をするようになる)とは考えられません。しかし、プログラムを実行するということは、現在動作中のプロセスを新しいプログラムに置き換えることで、制御を新しいプログラムに譲渡することを意味します。つまり、あるプロセスがバッファオーバーフローなどにより制御を失っていたとしても、プログラムを実行することにより、そのプロセスの制御が取り戻されるわけです。</p>
1906    
1907    <p>攻撃者の手によって制御を失ったプロセスからプログラムが実行された後の制御は、どのプログラムが実行されたかによって決まります。シェルが実行された場合には、シェルはユーザが要求したとおりに処理を実行してしまうため、プログラムの実行を要求したプロセスの所有者である攻撃者の手に委ねられてしまうわけです。しかし、何もせずに終了するようなプログラム(例えば /bin/true )が実行された場合には、プロセスの制御が攻撃者の手に委ねられてしまうことはありません。</p>
1908    
1909    <p>このように、攻撃者の手によって本来許可する必要の無いプログラムの実行が要求されるという出来事は、見方を変えると、攻撃者自身が制御を取り戻すためのチャンスを与えてくれていると考えることができます。そこで、 TOMOYO Linux では、許可されていないプログラムの実行が要求された場合、その要求を拒否する代わりに他のプログラムを実行するための機構を提供しています。この機構を用いて何をするかはシステム管理者の自由です。</p>
1910    
1911    <p>例えば、シェルの実行要求を /bin/true の実行要求に差し替えてしまうことで、そのプロセスを直ちに強制終了させることができます。</p>
1912    
1913    <p>例えば、シェルの実行要求をハニーポットクライアントプログラムの実行要求に差し替えてしまうことで、攻撃者がどのようなリクエストを行うかを観察することができます。</p>
1914    
1915    <p>例えば、そのログインセッションを強制終了させることができます。</p>
1916    
1917    <p>例えば、要求されたコマンドがどのパッケージに含まれているかを教えてくれる Ubuntu の command-not-found パッケージのように、「You are not permitted to execute this program.」のような警告を表示することができます。</p>
1918    
1919    <p>例えば、攻撃者の接続元IPアドレスを割り出して、ファイアウォールの設定を変更することができます。</p>
1920    
1921  <p>この機能を使うには、以下のように指定します。</p>  <p>この機能を使うには、以下のように指定します。</p>
1922    
1923  <table border="1">  <table border="1">
1924  <tr><td>/proc/ccs/domain_policy の例</td><td>意味</td></tr>  <tr><td>/proc/ccs/profile の例</td><td>/proc/ccs/domain_policy の例</td><td>意味</td></tr>
1925  <tr><td>execute_handler /usr/sbin/check-and-exec</td><td>このドメインに属しているプロセスがプログラムの実行を要求した場合、要求されたプログラムを実行する代わりに/usr/sbin/check-and-execを実行する。/usr/sbin/check-and-execはパラメータをチェックし、妥当と判断した場合には要求されたプログラムを実行する。</td></tr>  <tr><td>3-MAC_FOR_FILE=enforcing</td><td>use_profile 3<br>denied_execute_handler /bin/true</td><td>プロファイル 3 が割り当てられているドメインに属しているプロセスが、許可されていないプログラムの実行を要求した場合、代わりに /bin/true を実行します。</td></tr>
1926  </table>  </table>
1927    
1928    <p>この機能を使用する際の注意事項は<a name="denied_execute_handler">許可されていないプログラムの実行が要求された場合の代替処理指定</a>と同じです。</p>
1929    
1930  <hr>  <hr>
1931  <p><a href="index.html#manual">目次へ戻る</a></p>  <p><a href="index.html#manual">目次へ戻る</a></p>
1932  <hr>  <hr>

Legend:
Removed from v.1093  
changed lines
  Added in v.1094

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26