1 |
kumaneko |
999 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
2 |
|
|
<html lang="ja-JP"> |
3 |
|
|
<head> |
4 |
|
|
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> |
5 |
|
|
<meta http-equiv="Content-Style-Type" content="text/css"> |
6 |
|
|
<title>TOMOYO Linux ポリシー解説書</title> |
7 |
|
|
<link rel="stylesheet" href="tomoyo.css" media="all" type="text/css"> |
8 |
|
|
</head> |
9 |
|
|
<body> |
10 |
|
|
<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> |
12 |
|
|
<p style="text-align:right;">Last modified: $Date: 2008-02-19 17:32:30 +0900 (Tue, 19 Feb 2008) $</p> |
13 |
|
|
<h1><a name="index">目次</a></h1> |
14 |
kumaneko |
1000 |
<h2><a href="#Keyword_Index">1. キーワード一覧</a></p> |
15 |
|
|
<h2><a href="#Introduction">2. はじめに</a></h2> |
16 |
|
|
<p><a href="#word_expression_rules">2.1 単語の表記規則</a></p> |
17 |
|
|
<p><a href="#wildcard_expression_rules">2.2 パターンの表記規則</a></p> |
18 |
|
|
<p><a href="#word_length_rules">2.3 単語の長さに関する制約</a></p> |
19 |
|
|
<p><a href="#line_length_rules">2.4 1行の長さに関する制約</a></p> |
20 |
|
|
<p><a href="#memory_allocation_rules">2.5 メモリ使用量に関する制約</a></p> |
21 |
|
|
<h2><a href="#Policy_Files">3. ポリシーファイルに関して</a></h2> |
22 |
|
|
<p><a href="#policy_file_locations">3.1 所在について</a></p> |
23 |
|
|
<p><a href="#policy_file_modifiers">3.2 変更について</a></p> |
24 |
|
|
<h2><a href="#Domain_Rules">4. ドメインに関して</a></h2> |
25 |
|
|
<p><a href="#domain_definition">4.1 ドメインとは</a></p> |
26 |
|
|
<p><a href="#domain_transition">4.2 ドメイン遷移とは</a></p> |
27 |
|
|
<p><a href="#access_logs">4.3 アクセスログについて</a></p> |
28 |
kumaneko |
999 |
|
29 |
kumaneko |
1000 |
<h2><a href="#features_for_intermediate">中級者向けの機能</a></h2> |
30 |
|
|
<p><a href="#sleep_penalty">ポリシー違反時のペナルティ指定</a></p> |
31 |
|
|
<p><a href="#conditional_acl">条件付きアクセス許可の指定</a></p> |
32 |
|
|
<h2><a href="#features_for_advanced">上級者向けの機能</a></h2> |
33 |
|
|
<p><a href="#stateful_acl">ステートフルなアクセス許可の指定</a></p> |
34 |
|
|
<p><a href="#alt_exec_penalty">許可されていないプログラムの実行が要求された場合の代替処理指定</a></p> |
35 |
|
|
|
36 |
kumaneko |
999 |
<hr> |
37 |
|
|
|
38 |
kumaneko |
1000 |
<h1><a name="Keyword_Index">1. キーワード一覧</a></h1> |
39 |
kumaneko |
999 |
|
40 |
kumaneko |
1000 |
<p><a name="profile">/proc/ccs/profile</a> <a name="profile.conf">/etc/ccs/profile.conf</a></p> |
41 |
|
|
|
42 |
|
|
<ul> |
43 |
|
|
<li><a href="#profile_MAC_FOR_FILE">MAC_FOR_FILE</a></li> |
44 |
|
|
<li><a href="#profile_MAC_FOR_ARGV0">MAC_FOR_ARGV0</a></li> |
45 |
|
|
<li><a href="#profile_MAC_FOR_ENV">MAC_FOR_ENV</a></li> |
46 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::inet_tcp_create">MAC_FOR_CAPABILITY::inet_tcp_create</a></li> |
47 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::inet_tcp_listen">MAC_FOR_CAPABILITY::inet_tcp_listen</a></li> |
48 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::inet_tcp_connect">MAC_FOR_CAPABILITY::inet_tcp_connect</a></li> |
49 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::use_inet_udp">MAC_FOR_CAPABILITY::use_inet_udp</a></li> |
50 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::use_inet_ip">MAC_FOR_CAPABILITY::use_inet_ip</a></li> |
51 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::use_route">MAC_FOR_CAPABILITY::use_route</a></li> |
52 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::use_packet">MAC_FOR_CAPABILITY::use_packet</a></li> |
53 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::use_kernel_module">MAC_FOR_CAPABILITY::use_kernel_module</a></li> |
54 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::create_fifo">MAC_FOR_CAPABILITY::create_fifo</a></li> |
55 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::create_block_dev">MAC_FOR_CAPABILITY::create_block_dev</a></li> |
56 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::create_char_dev">MAC_FOR_CAPABILITY::create_char_dev</a></li> |
57 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::create_unix_socket">MAC_FOR_CAPABILITY::create_unix_socket</a></li> |
58 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_MOUNT">MAC_FOR_CAPABILITY::SYS_MOUNT</a></li> |
59 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_UMOUNT">MAC_FOR_CAPABILITY::SYS_UMOUNT</a></li> |
60 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_REBOOT">MAC_FOR_CAPABILITY::SYS_REBOOT</a></li> |
61 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_CHROOT">MAC_FOR_CAPABILITY::SYS_CHROOT</a></li> |
62 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_KILL">MAC_FOR_CAPABILITY::SYS_KILL</a></li> |
63 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_VHANGUP">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></li> |
64 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_TIME">MAC_FOR_CAPABILITY::SYS_TIME</a></li> |
65 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_NICE">MAC_FOR_CAPABILITY::SYS_NICE</a></li> |
66 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_SETHOSTNAME">MAC_FOR_CAPABILITY::SYS_SETHOSTNAME</a></li> |
67 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_LINK">MAC_FOR_CAPABILITY::SYS_LINK</a></li> |
68 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_SYMLINK">MAC_FOR_CAPABILITY::SYS_SYMLINK</a></li> |
69 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_RENAME">MAC_FOR_CAPABILITY::SYS_RENAME</a></li> |
70 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_UNLINK">MAC_FOR_CAPABILITY::SYS_UNLINK</a></li> |
71 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_CHMOD">MAC_FOR_CAPABILITY::SYS_CHMOD</a></li> |
72 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_CHOWN">MAC_FOR_CAPABILITY::SYS_CHOWN</a></li> |
73 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_IOCTL">MAC_FOR_CAPABILITY::SYS_IOCTL</a></li> |
74 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD">MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD</a></li> |
75 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT">MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT</a></li> |
76 |
|
|
<li><a href="#profile_MAC_FOR_CAPABILITY::SYS_PTRACE">MAC_FOR_CAPABILITY::SYS_PTRACE</a></li> |
77 |
|
|
<li><a href="#profile_MAC_FOR_NETWORK">MAC_FOR_NETWORK</a></li> |
78 |
|
|
<li><a href="#profile_MAC_FOR_SIGNAL">MAC_FOR_SIGNAL</a></li> |
79 |
|
|
<li><a href="#profile_DENY_CONCEAL_MOUNT">DENY_CONCEAL_MOUNT</a></li> |
80 |
|
|
<li><a href="#profile_RESTRICT_CHROOT">RESTRICT_CHROOT</a></li> |
81 |
|
|
<li><a href="#profile_RESTRICT_MOUNT">RESTRICT_MOUNT</a></li> |
82 |
|
|
<li><a href="#profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></li> |
83 |
|
|
<li><a href="#profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></li> |
84 |
|
|
<li><a href="#profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></li> |
85 |
|
|
<li><a href="#profile_MAC_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></li> |
86 |
|
|
<li><a href="#profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></li> |
87 |
|
|
<li><a href="#profile_MAX_REJECT_LOG">MAX_REJECT_LOG</a></li> |
88 |
|
|
<li><a href="#profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></li> |
89 |
|
|
<li><a href="#profile_ALLOW_ENFORCE_GRACE">ALLOW_ENFORCE_GRACE</a></li> |
90 |
|
|
<li><a href="#profile_SLEEP_PERIOD">SLEEP_PERIOD</a></li> |
91 |
|
|
<li><a href="#profile_ALT_EXEC">ALT_EXEC</a></li> |
92 |
|
|
</ul> |
93 |
|
|
|
94 |
|
|
<p><a name="system_policy">/proc/ccs/system_policy</a> <a name="system_policy.conf">/etc/ccs/system_policy.conf</a></p> |
95 |
|
|
|
96 |
|
|
<ul> |
97 |
|
|
<li><a href="#system_policy_allow_mount">allow_mount</a></li> |
98 |
|
|
<li><a href="#system_policy_deny_unmount">deny_unmount</a></li> |
99 |
|
|
<li><a href="#system_policy_allow_chroot">allow_chroot</a></li> |
100 |
|
|
<li><a href="#system_policy_allow_pivot_root">allow_pivot_root</a></li> |
101 |
|
|
<li><a href="#system_policy_deny_autobind">deny_autobind</a></li> |
102 |
|
|
</ul> |
103 |
|
|
|
104 |
|
|
<p><a name="exception_policy">/proc/ccs/exception_policy</a> <a name="exception_policy.conf">/etc/ccs/exception_policy.conf</a></p> |
105 |
|
|
|
106 |
|
|
<ul> |
107 |
|
|
<li><a href="#exception_policy_aggregator">aggregator</a></li> |
108 |
|
|
<li><a href="#exception_policy_initialize_domain">initialize_domain</a></li> |
109 |
|
|
<li><a href="#exception_policy_no_initialize_domain">no_initialize_domain</a></li> |
110 |
|
|
<li><a href="#exception_policy_keep_domain">keep_domain</a></li> |
111 |
|
|
<li><a href="#exception_policy_no_keep_domain">no_keep_domain</a></li> |
112 |
|
|
<li><a href="#exception_policy_file_pattern">file_pattern</a></li> |
113 |
|
|
<li><a href="#exception_policy_path_group">path_group</a></li> |
114 |
|
|
<li><a href="#exception_policy_address_group">address_group</a></li> |
115 |
|
|
<li><a href="#exception_policy_allow_read">allow_read</a></li> |
116 |
|
|
<li><a href="#exception_policy_allow_env">allow_env</a></li> |
117 |
|
|
<li><a href="#exception_policy_deny_rewrite">deny_rewrite</a></li> |
118 |
|
|
<li><a href="#exception_policy_alias">alias</a></li> |
119 |
|
|
</ul> |
120 |
|
|
|
121 |
|
|
<p><a name="domain_policy">/proc/ccs/domain_policy</a> <a name="domain_policy.conf">/etc/ccs/domain_policy.conf</a></p> |
122 |
|
|
|
123 |
|
|
<ul> |
124 |
|
|
<li><a href="#domain_policy_allow_execute">allow_execute</a></li> |
125 |
|
|
<li><a href="#domain_policy_allow_read">allow_read</a></li> |
126 |
|
|
<li><a href="#domain_policy_allow_write">allow_write</a></li> |
127 |
|
|
<li><a href="#domain_policy_allow_read/write">allow_read/write</a></li> |
128 |
|
|
<li><a href="#domain_policy_allow_create">allow_create</a></li> |
129 |
|
|
<li><a href="#domain_policy_allow_unlink">allow_unlink</a></li> |
130 |
|
|
<li><a href="#domain_policy_allow_mkdir">allow_mkdir</a></li> |
131 |
|
|
<li><a href="#domain_policy_allow_rmdir">allow_rmdir</a></li> |
132 |
|
|
<li><a href="#domain_policy_allow_mkfifo">allow_mkfifo</a></li> |
133 |
|
|
<li><a href="#domain_policy_allow_mksock">allow_mksock</a></li> |
134 |
|
|
<li><a href="#domain_policy_allow_mkblock">allow_mkblock</a></li> |
135 |
|
|
<li><a href="#domain_policy_allow_mkchar">allow_mkchar</a></li> |
136 |
|
|
<li><a href="#domain_policy_allow_truncate">allow_truncate</a></li> |
137 |
|
|
<li><a href="#domain_policy_allow_symlink">allow_symlink</a></li> |
138 |
|
|
<li><a href="#domain_policy_allow_link">allow_link</a></li> |
139 |
|
|
<li><a href="#domain_policy_allow_rename">allow_rename</a></li> |
140 |
|
|
<li><a href="#domain_policy_allow_rewrite">allow_rewrite</a></li> |
141 |
|
|
<li><a href="#domain_policy_allow_argv0">allow_argv0</a></li> |
142 |
|
|
<li><a href="#domain_policy_allow_env">allow_env</a></li> |
143 |
|
|
<li><a href="#domain_policy_allow_network">allow_network</a></li> |
144 |
|
|
<li><a href="#domain_policy_allow_capability">allow_capability</a></li> |
145 |
|
|
<li><a href="#domain_policy_allow_signal">allow_signal</a></li> |
146 |
|
|
<li><a href="#domain_policy_use_profile">use_profile</a></li> |
147 |
|
|
<li><a href="#domain_policy_quota_exceeded">quota_exceeded</a></li> |
148 |
|
|
</ul> |
149 |
|
|
|
150 |
|
|
<h1><a name="Introduction">2. はじめに</a></h1> |
151 |
|
|
|
152 |
|
|
<h2><a name="word_expression_rules">2.1 単語の表記規則</a></h2> |
153 |
|
|
|
154 |
kumaneko |
999 |
<p>TOMOYO Linux はパス名を用いたアクセス制御を行います。パス名には英数字だけでなく空白や改行などの文字、漢字のような複数バイトで構成される文字などが含まれる可能性があります。そのため、いかなる文字でも正しく処理できるようにするために、 TOMOYO Linux に於いては以下の規則に従って単語を表記します。単語とは、パス名だけでなくコメントや環境変数の名前やプログラム実行時のパラメータなど、文字列として扱う全ての情報を指します。</p> |
155 |
|
|
|
156 |
kumaneko |
1000 |
<ul> |
157 |
|
|
<li>NUL 文字(0x00)は文字列の終端を示すための文字であり、 \000 という表記はできません。</li> |
158 |
|
|
<li>\ 文字(0x5C)は8進数表記であることを示すために使用されるため、 \\ のように2個続けます。</li> |
159 |
|
|
<li>0x01 〜 0x20 および 0x7F 〜 0xFF は \ooo という形式の8進数で表記します。</li> |
160 |
|
|
<li>残りの 0x21 〜 0x5B および 0x5D 〜 0x7E はそのままの文字で表記します。</li> |
161 |
|
|
</ul> |
162 |
|
|
|
163 |
kumaneko |
999 |
<table border="1"> |
164 |
|
|
<tr><td><table><tr><td></td><td>下位4ビット</td></tr><tr><td>上位4ビット</td><td></td></tr></table></td><td>0x0</td><td>0x1</td><td>0x2</td><td>0x3</td><td>0x4</td><td>0x5</td><td>0x6</td><td>0x7</td><td>0x8</td><td>0x9</td><td>0xA</td><td>0xB</td><td>0xC</td><td>0xD</td><td>0xE</td><td>0xF</td></tr> |
165 |
|
|
<tr><td>0x0</td><td></td><td>\001</td><td>\002</td><td>\003</td><td>\004</td><td>\005</td><td>\006</td><td>\007</td><td>\010</td><td>\011</td><td>\012</td><td>\013</td><td>\014</td><td>\015</td><td>\016</td><td>\017</td></tr> |
166 |
|
|
<tr><td>0x1</td><td>\020</td><td>\021</td><td>\022</td><td>\023</td><td>\024</td><td>\025</td><td>\026</td><td>\027</td><td>\030</td><td>\031</td><td>\032</td><td>\033</td><td>\034</td><td>\035</td><td>\036</td><td>\037</td></tr> |
167 |
|
|
<tr><td>0x2</td><td>\040</td><td>!</td><td>"</td><td>#</td><td>$</td><td>%</td><td>&</td><td>'</td><td>(</td><td>)</td><td>*</td><td>+</td><td>,</td><td>-</td><td>.</td><td>/</td></tr> |
168 |
|
|
<tr><td>0x3</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>:</td><td>;</td><td><</td><td>=</td><td>></td><td>?</td></tr> |
169 |
|
|
<tr><td>0x4</td><td>@</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td><td>O</td></tr> |
170 |
|
|
<tr><td>0x5</td><td>P</td><td>Q</td><td>R</td><td>S</td><td>T</td><td>U</td><td>V</td><td>W</td><td>X</td><td>Y</td><td>Z</td><td>[</td><td>\\</td><td>]</td><td>^</td><td>_</td></tr> |
171 |
|
|
<tr><td>0x6</td><td>`</td><td>a</td><td>b</td><td>c</td><td>d</td><td>e</td><td>f</td><td>g</td><td>h</td><td>i</td><td>j</td><td>k</td><td>l</td><td>m</td><td>n</td><td>o</td></tr> |
172 |
|
|
<tr><td>0x7</td><td>p</td><td>q</td><td>r</td><td>s</td><td>t</td><td>u</td><td>v</td><td>w</td><td>x</td><td>y</td><td>z</td><td>{</td><td>|</td><td>}</td><td>~</td><td>\177</td></tr> |
173 |
|
|
<tr><td>0x8</td><td>\200</td><td>\201</td><td>\202</td><td>\203</td><td>\204</td><td>\205</td><td>\206</td><td>\207</td><td>\210</td><td>\211</td><td>\212</td><td>\213</td><td>\214</td><td>\215</td><td>\216</td><td>\217</td></tr> |
174 |
|
|
<tr><td>0x9</td><td>\220</td><td>\221</td><td>\222</td><td>\223</td><td>\224</td><td>\225</td><td>\226</td><td>\227</td><td>\230</td><td>\231</td><td>\232</td><td>\233</td><td>\234</td><td>\235</td><td>\236</td><td>\237</td></tr> |
175 |
|
|
<tr><td>0xA</td><td>\240</td><td>\241</td><td>\242</td><td>\243</td><td>\244</td><td>\245</td><td>\246</td><td>\247</td><td>\250</td><td>\251</td><td>\252</td><td>\253</td><td>\254</td><td>\255</td><td>\256</td><td>\257</td></tr> |
176 |
|
|
<tr><td>0xB</td><td>\260</td><td>\261</td><td>\262</td><td>\263</td><td>\264</td><td>\265</td><td>\266</td><td>\267</td><td>\270</td><td>\271</td><td>\272</td><td>\273</td><td>\274</td><td>\275</td><td>\276</td><td>\277</td></tr> |
177 |
|
|
<tr><td>0xC</td><td>\300</td><td>\301</td><td>\302</td><td>\303</td><td>\304</td><td>\305</td><td>\306</td><td>\307</td><td>\310</td><td>\311</td><td>\312</td><td>\313</td><td>\314</td><td>\315</td><td>\316</td><td>\317</td></tr> |
178 |
|
|
<tr><td>0xD</td><td>\320</td><td>\321</td><td>\322</td><td>\323</td><td>\324</td><td>\325</td><td>\326</td><td>\327</td><td>\330</td><td>\331</td><td>\332</td><td>\333</td><td>\334</td><td>\335</td><td>\336</td><td>\337</td></tr> |
179 |
|
|
<tr><td>0xE</td><td>\340</td><td>\341</td><td>\342</td><td>\343</td><td>\344</td><td>\345</td><td>\346</td><td>\347</td><td>\350</td><td>\351</td><td>\352</td><td>\353</td><td>\354</td><td>\355</td><td>\356</td><td>\357</td></tr> |
180 |
|
|
<tr><td>0xF</td><td>\360</td><td>\361</td><td>\362</td><td>\363</td><td>\364</td><td>\365</td><td>\366</td><td>\367</td><td>\370</td><td>\371</td><td>\372</td><td>\373</td><td>\374</td><td>\375</td><td>\376</td><td>\377</td></tr> |
181 |
|
|
</table> |
182 |
|
|
|
183 |
kumaneko |
1000 |
<ul> |
184 |
|
|
<li>単語と単語を区切るデリミタとして空白文字( 0x20 )を、行と行を区切るデリミタとして改行文字( 0x1A )を使用します。</li> |
185 |
|
|
<li>上記の規則に従って表記された単語と、デリミタとして使われる空白文字および改行文字のみが有効です。それ以外の文字は空白文字とみなされます。連続する空白文字は自動的に1個の空白文字に圧縮されます。行頭及び行末の空白文字は自動的に削除されます。</li> |
186 |
|
|
</ul> |
187 |
kumaneko |
999 |
|
188 |
|
|
<p>以下に表記例を示します。</p> |
189 |
|
|
|
190 |
|
|
<table border="1"> |
191 |
|
|
<tr><td>単語</td><td>正しい表記</td><td>誤った表記</td></tr> |
192 |
|
|
<tr><td>Hello world!</td><td>Hello\040world!</td><td>"Hello world!"</td></tr> |
193 |
|
|
<tr><td>/home/user/Documents and Settings/</td><td>/home/user/Documents\040and\040Settings/</td><td>/home/user/Documents and Settings/</td></tr> |
194 |
|
|
<tr><td>コメント (UTF-8 の場合)</td><td>\343\202\263\343\203\241\343\203\263\343\203\210\040(UTF-8\040\343\201\256\345\240\264\345\220\210)</td><td>コメント\040(UTF-8\040の場合)</td></tr> |
195 |
|
|
</table> |
196 |
|
|
|
197 |
|
|
<p>パス名は必ず / から始まります。パス名が / で終わる場合はディレクトリ、 / 以外で終わる場合にはディレクトリ以外であると解釈されます。</p> |
198 |
|
|
|
199 |
|
|
<table border="1"> |
200 |
|
|
<tr><td>パス名</td><td>解釈</td></tr> |
201 |
|
|
<tr><td>/</td><td>ディレクトリ</td></tr> |
202 |
|
|
<tr><td>/tmp/</td><td>ディレクトリ </td></tr> |
203 |
|
|
<tr><td>/tmp</td><td>ディレクトリ以外</td></tr> |
204 |
|
|
<tr><td>tmp/</td><td>無効なパス名</td></tr> |
205 |
|
|
</table> |
206 |
|
|
|
207 |
kumaneko |
1000 |
<h2><a name="wildcard_expression_rules">2.2 パターンの表記規則</a></h2> |
208 |
kumaneko |
999 |
|
209 |
|
|
<p>パス名にはテンポラリファイルのように、毎回異なる文字が使われる場合があります。そのため、ワイルドカードを用いたパターン化を行うことが必要になります。 TOMOYO Linux に於いては以下のワイルドカードをサポートしています。</p> |
210 |
|
|
|
211 |
|
|
<table border="1"> |
212 |
|
|
<tr><td>ワイルドカード</td><td>意味</td><td>使用例</td></tr> |
213 |
|
|
<tr><td>\*</td><td>/ 以外の0文字以上</td><td>/var/log/samba/\*</td></tr> |
214 |
|
|
<tr><td>\@</td><td>/ と . 以外の0文字以上</td><td>/var/www/html/\@.html</td></tr> |
215 |
|
|
<tr><td>\?</td><td>/ 以外の1文字</td><td>/tmp/mail.\?\?\?\?\?\?</td></tr> |
216 |
|
|
<tr><td>\$</td><td>1桁以上の10進数</td><td>/proc/\$/cmdline</td></tr> |
217 |
|
|
<tr><td>\+</td><td>10進数1桁</td><td>/var/tmp/my_work.\+</td></tr> |
218 |
|
|
<tr><td>\X</td><td>1桁以上の16進数</td><td>/var/tmp/my-work.\X</td></tr> |
219 |
|
|
<tr><td>\x</td><td>16進数1桁</td><td>/tmp/my-work.\x</td></tr> |
220 |
|
|
<tr><td>\A</td><td>1文字以上のアルファベット</td><td>/var/log/my-work/\$-\A-\$.log</td></tr> |
221 |
|
|
<tr><td>\a</td><td>アルファベット1文字</td><td>/home/users/\a/\*/public_html/\*.html</td></tr> |
222 |
|
|
<tr><td>\-</td><td>パス名を除外する演算子</td><td> |
223 |
|
|
<table border="1"> |
224 |
|
|
<tr><td>使用例</td><td>意味</td></tr> |
225 |
|
|
<tr><td>/etc/\*</td><td>/etc/ 直下の全ファイル</td></tr> |
226 |
|
|
<tr><td>/etc/\*\-\*shadow\*</td><td>/etc/\*shadow\* 以外の /etc/\*</td></tr> |
227 |
|
|
<tr><td>/\*\-proc\-sys/</td><td>/proc/ と /sys/ 以外の /\*/</td></tr> |
228 |
|
|
</table> |
229 |
|
|
</td></tr> |
230 |
|
|
</table> |
231 |
|
|
|
232 |
kumaneko |
1000 |
<h2><a name="word_length_rules">2.3 単語の長さに関する制約</a></h2> |
233 |
kumaneko |
999 |
|
234 |
|
|
<p>Linux に於いてはパス名の長さに関する上限は存在しませんが、パス名を用いたアクセス制御を行うために無限の長さをサポートすることはできません。そのため、 TOMOYO Linux に於いては、単語の長さは4000バイトまでに制限されています。</p> |
235 |
|
|
|
236 |
kumaneko |
1000 |
<h2><a name="line_length_rules">2.4 1行の長さに関する制約</a></h2> |
237 |
kumaneko |
999 |
|
238 |
|
|
<p>TOMOYO Linux に於いては、1行の長さは8192バイトまでに制限されています。</p> |
239 |
|
|
|
240 |
kumaneko |
1000 |
<h2><a name="memory_allocation_rules">2.5 メモリ使用量に関する制約</a></h2> |
241 |
kumaneko |
999 |
|
242 |
|
|
<p>TOMOYO Linux に於いては、アクセス許可や単語を記憶するために一度割り当てられたメモリは解放されません。システムを再起動する以外に、不要になったメモリを解放する手段は存在しません。</p> |
243 |
|
|
|
244 |
kumaneko |
1000 |
<p>ただし、運用開始後にはアクセス許可の変更は生じにくいという傾向があること、および、運用開始前に適切にチューニングすることによりメモリ消費量を通常は1メガバイト以内に抑えられることから、心配する必要はありません。</p> |
245 |
kumaneko |
999 |
|
246 |
|
|
<p>TOMOYO Linux が現在使用中のメモリ消費量は、 /proc/ccs/meminfo から確認できます。単位はバイトです。 Shared: が単語を記憶するために使用されている量、 Private: がアクセス許可を記憶するために使用されている量で、減少することはありません。 Dynamic: がアクセス許可のチェックやアクセスログの保持などのために一時的に使用されている量で、不要になると減少します。</p> |
247 |
|
|
|
248 |
|
|
<table border="1"> |
249 |
|
|
<tr><td><pre> |
250 |
|
|
# cat /proc/ccs/meminfo |
251 |
|
|
Shared: 65536 |
252 |
|
|
Private: 49152 |
253 |
|
|
Dynamic: 5106 |
254 |
|
|
Total: 119794 |
255 |
|
|
</pre></td></tr> |
256 |
|
|
</table> |
257 |
|
|
|
258 |
kumaneko |
1000 |
<h1><a name="Policy_Files">3. ポリシーファイルに関して</a></h1> |
259 |
kumaneko |
999 |
|
260 |
kumaneko |
1000 |
<h2><a name="policy_file_locations">3.1 所在について</a></h2> |
261 |
kumaneko |
999 |
|
262 |
|
|
<p>ポリシーファイルとは、アクセスの可否を定義したファイルです。システムの起動時に自動的にカーネルへと読み込まれます。</p> |
263 |
|
|
|
264 |
|
|
<p>システムの起動時には、 /sbin/init というプログラムが実行されます。 /sbin/init の実行が要求されたときに、 /sbin/ccs-init というプログラムが存在していた場合、 /sbin/ccs-init が実行され、 /sbin/ccs-init の処理が終了してから /sbin/init の実行が開始されます。</p> |
265 |
|
|
|
266 |
|
|
<p> /sbin/ccs-init は /etc/ccs/ ディレクトリにあるポリシーファイルを /proc/ccs/ ディレクトリを通じてカーネルへと読み込みます。</p> |
267 |
|
|
|
268 |
|
|
<table border="1"> |
269 |
kumaneko |
1000 |
<tr><td>カーネルとのインタフェース</td><td>ポリシーファイル</td><td>定義されている内容</td></tr> |
270 |
|
|
<tr><td><a href="#profile">/proc/ccs/profile</a></td><td><a href="#profile.conf">/etc/ccs/profile.conf</a></td><td>プロファイル(制御レベルを定義したもの)</td></tr> |
271 |
|
|
<tr></td><td><a href="#manager">/proc/ccs/manager</a></td><td><a href="#manager.conf">/etc/ccs/manager.conf</a><td>マネージャ(ポリシーの変更ができるプログラムを定義したもの)</td></tr> |
272 |
|
|
<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> |
273 |
|
|
<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> |
274 |
|
|
<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> |
275 |
kumaneko |
999 |
</table> |
276 |
|
|
|
277 |
kumaneko |
1000 |
<p>そのほかの情報を取得するためのインタフェースもあります。対応するポリシーファイルはありません。</p> |
278 |
kumaneko |
999 |
|
279 |
|
|
<table border="1"> |
280 |
|
|
<tr><td>カーネルとのインタフェース</td><td>内容</td></tr> |
281 |
kumaneko |
1000 |
<tr><td><a href="#query">/proc/ccs/query</a></td><td>管理者の指示待ちとなっているアクセス要求</td></tr> |
282 |
|
|
<tr><td><a href="#.domain_status">/proc/ccs/.domain_status</a></td><td>定義されているドメイン名とプロファイル番号</td></tr> |
283 |
|
|
<tr><td><a href="#meminfo">/proc/ccs/meminfo</a></td><td>メモリ使用状況</td></tr> |
284 |
|
|
<tr><td><a href="#grant_log">/proc/ccs/grant_log</a></td><td>ポリシーに違反しなかったアクセス要求のログ</td></tr> |
285 |
|
|
<tr><td><a href="#reject_log">/proc/ccs/reject_log</a></td><td>ポリシーに違反したアクセス要求のログ</td></tr> |
286 |
|
|
<tr><td><a href="#self_domain">/proc/ccs/self_domain</a></td><td>自分が属しているドメインのドメイン名</td></tr> |
287 |
|
|
<tr><td><a href="#.process_status">/proc/ccs/.process_status</a></td><td>プロセスが属しているドメイン名とプロファイル番号</td></tr> |
288 |
|
|
<tr><td><a href="#.updates_counter">/proc/ccs/.updates_counter</a></td><td>ポリシーの変更カウンタ</td></tr> |
289 |
|
|
<tr><td><a href="#version">/proc/ccs/version</a></td><td>TOMOYO Linux のバージョン</td></tr> |
290 |
kumaneko |
999 |
</table> |
291 |
|
|
|
292 |
kumaneko |
1000 |
<h2><a name="policy_file_modifiers">3.2 変更について</a></h2> |
293 |
kumaneko |
999 |
|
294 |
|
|
<p>カーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更することができるプログラム名を /proc/ccs/manager に登録します。プログラム名ではなくドメイン名で登録することもできます。</p> |
295 |
|
|
|
296 |
|
|
<ul> |
297 |
|
|
<li>/proc/ccs/manager に登録されているプログラム名を持つプロセス</li> |
298 |
|
|
<li>/proc/ccs/manager に登録されているドメイン名を持つプロセス</li> |
299 |
|
|
</ul> |
300 |
|
|
|
301 |
kumaneko |
1006 |
<p>だけがカーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更できます。以下に例を示します。</p> |
302 |
kumaneko |
999 |
|
303 |
|
|
<table border="1"> |
304 |
|
|
<tr><td> |
305 |
|
|
# cat /proc/ccs/manager<br> |
306 |
|
|
/usr/lib/ccs/loadpolicy<br> |
307 |
|
|
/usr/lib/ccs/editpolicy<br> |
308 |
|
|
/usr/lib/ccs/setlevel<br> |
309 |
|
|
/usr/lib/ccs/setprofile<br> |
310 |
|
|
/usr/lib/ccs/ld-watch<br> |
311 |
|
|
/usr/lib/ccs/ccs-queryd<br> |
312 |
|
|
<kernel> /sbin/mingetty /bin/login /bin/bash |
313 |
|
|
</td></tr> |
314 |
|
|
</table> |
315 |
|
|
|
316 |
kumaneko |
1006 |
<p>上記の制約に加えて、デフォルトではユーザIDと実効ユーザIDの両方が0であるプロセスだけがポリシーを変更できますが、 非 root ユーザによるポリシーの変更を認めたい場合には /proc/ccs/manager に対して</p> |
317 |
kumaneko |
999 |
|
318 |
kumaneko |
1006 |
<table border="1"> |
319 |
|
|
<tr><td> |
320 |
|
|
# echo manage_by_non_root | loadpolicy -m |
321 |
|
|
</td></tr> |
322 |
|
|
</table> |
323 |
kumaneko |
999 |
|
324 |
kumaneko |
1006 |
<p>のように manage_by_non_root というキーワードを書き込むことで、ユーザIDと実効ユーザIDのチェックを無効にすることができます。また、再びユーザIDと実効ユーザIDのチェックを有効にするには、</p> |
325 |
|
|
|
326 |
kumaneko |
999 |
<table border="1"> |
327 |
kumaneko |
1006 |
<tr><td> |
328 |
|
|
# echo delete manage_by_non_root | loadpolicy -m |
329 |
|
|
</td></tr> |
330 |
kumaneko |
999 |
</table> |
331 |
|
|
|
332 |
kumaneko |
1006 |
<p>のように delete manage_by_non_root というキーワードを書き込んでください。 /proc/ccs/ 以下のエントリの所有者は root なので、非 root ユーザによるアクセスを認めるためには必要に応じて chown/chmod を実行してください。</p> |
333 |
kumaneko |
999 |
|
334 |
kumaneko |
1006 |
<p>なお、学習モード用のプロファイルが割り当てられているプロセスは、アクセスを要求するだけで<a href="#system_policy">/proc/ccs/system_policy</a>または<a href="#domain_policy">/proc/ccs/domain_policy</a>へと自動的にアクセス許可が追加されていきます。</p> |
335 |
|
|
|
336 |
kumaneko |
1000 |
<h1><a name="Domain_Rules">4. ドメインに関して</a></h1> |
337 |
kumaneko |
999 |
|
338 |
kumaneko |
1000 |
<h2><a name="domain_definition">4.1 ドメインとは</a></h2> |
339 |
kumaneko |
999 |
|
340 |
kumaneko |
1000 |
<p>TOMOYO Linux においては、全てのプロセスがそれぞれ1つのドメインに属し、全てのプログラムがそれぞれ異なるドメインに属する。現在実行されている2つのプロセスが同一のプログラムであっても、それぞれのプロセスの直前のドメインが異なっていれば異なるドメインに属する。</p> |
341 |
kumaneko |
999 |
|
342 |
kumaneko |
1000 |
<p>全てのドメインはカーネルが属するドメイン「<kernel>」を基点として定義される。 /sbin/init はカーネルの属するドメインから起動されるので、 /sbin/init のドメインは「<kernel> /sbin/init」と定義される。 /etc/rc.d/rc はカーネルから起動された /sbin/init の属するドメインから起動されるので、 /etc/rc.d/rc のドメインは「<kernel> /sbin/init /etc/rc.d/rc」と定義される。</p> |
343 |
kumaneko |
999 |
|
344 |
kumaneko |
1000 |
<h2><a name="domain_transition">4.2 ドメイン遷移とは</a></h2> |
345 |
kumaneko |
999 |
|
346 |
kumaneko |
1000 |
<p>実行時のプログラムの名前により異なる動作をするプログラムが存在する。例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクである。 TOMOYO Linux は正規化したパス名を使用するので、 /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。</p> |
347 |
kumaneko |
999 |
|
348 |
|
|
<p>プロセスがプログラムを実行しようとすると、以下の処理が行われる。</p> |
349 |
|
|
|
350 |
|
|
<table border="1"> |
351 |
|
|
<tr><td>Step</td><td>内容</td></tr> |
352 |
|
|
<tr><td>プログラム名の取得</td><td> |
353 |
|
|
<p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補1」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決したパス名を取得する。</p> |
354 |
|
|
<p>実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補2」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決する前のパス名を取得する。</p> |
355 |
|
|
</td></tr> |
356 |
|
|
<tr><td>シンボリックリンクの識別</td><td> |
357 |
|
|
<p>「パス名候補1」と「パス名候補2」が一致しない場合、例外ポリシーから</p> |
358 |
|
|
|
359 |
|
|
<ul> |
360 |
|
|
<li>alias 「パス名候補1」 「パス名候補2」 |
361 |
|
|
</ul> |
362 |
|
|
|
363 |
|
|
<p>というエントリを探す。見つかった場合は「パス名候補2」を「パス名候補1」とする。</p> |
364 |
|
|
</td></tr> |
365 |
|
|
<tr><td>argv[0] のチェック</td><td> |
366 |
|
|
<p>「パス名候補1」の最後の / 以降の部分と argv[0] の最後の / 以降の部分が異なっている場合、ドメイン別ポリシーから</p> |
367 |
|
|
|
368 |
|
|
<ul> |
369 |
|
|
<li>allow_argv0 「パス名候補1」 「argv[0]の最後の / 以降の部分」 |
370 |
|
|
</ul> |
371 |
|
|
|
372 |
|
|
<p>というエントリを探す。見つからなければ拒否する。</p> |
373 |
|
|
</td></tr> |
374 |
|
|
<tr><td>類似するプログラムの集約</td><td> |
375 |
|
|
<p>例外ポリシーから</p> |
376 |
|
|
|
377 |
|
|
<ul> |
378 |
|
|
<li>aggregator 「パス名候補1」 「集約されたパス名」 |
379 |
|
|
</ul> |
380 |
|
|
|
381 |
|
|
<p>というエントリを探す。見つかった場合は、「集約されたパス名」を「パス名候補1」とする。</p> |
382 |
|
|
</td></tr> |
383 |
|
|
<tr><td>権限のチェック</td><td> |
384 |
|
|
<p>ドメイン別ポリシーから</p> |
385 |
|
|
|
386 |
|
|
<ul> |
387 |
|
|
<li>allow_execute 「パス名候補1」 |
388 |
|
|
<li>allow_execute @「パス名候補1」を含むグループ名 |
389 |
|
|
</ul> |
390 |
|
|
|
391 |
|
|
<p>というエントリを探す。見つからなければ拒否する。</p> |
392 |
|
|
</td></tr> |
393 |
|
|
<tr><td>遷移先の決定</td><td> |
394 |
|
|
|
395 |
|
|
<p>(1) 例外ポリシーから</p> |
396 |
|
|
|
397 |
|
|
<ul> |
398 |
|
|
<li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」 |
399 |
|
|
<li>no_initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
400 |
|
|
<li>no_initialize_domain 「パス名候補1」 |
401 |
|
|
</ul> |
402 |
|
|
|
403 |
|
|
<p>というエントリを探す。見つかった場合は (3) へ進む。</p> |
404 |
|
|
|
405 |
|
|
<p>(2) 例外ポリシーから</p> |
406 |
|
|
|
407 |
|
|
<ul> |
408 |
|
|
<li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」 |
409 |
|
|
<li>initialize_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
410 |
|
|
<li>initialize_domain 「パス名候補1」 |
411 |
|
|
</ul> |
412 |
|
|
|
413 |
|
|
<p>というエントリを探す。見つかった場合は「カーネルが属しているドメインのドメイン名(<kernel>)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進む。</p> |
414 |
|
|
|
415 |
|
|
<p>(3) 例外ポリシーから</p> |
416 |
|
|
|
417 |
|
|
<ul> |
418 |
|
|
<li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」 |
419 |
|
|
<li>no_keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
420 |
|
|
<li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」 |
421 |
|
|
<li>no_keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
422 |
|
|
</ul> |
423 |
|
|
|
424 |
|
|
<p>というエントリを探す。見つかった場合は (5) へ進む。</p> |
425 |
|
|
|
426 |
|
|
<p>(4) 例外ポリシーから</p> |
427 |
|
|
|
428 |
|
|
<ul> |
429 |
|
|
<li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」 |
430 |
|
|
<li>keep_domain 「パス名候補1」 from 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
431 |
|
|
<li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」 |
432 |
|
|
<li>keep_domain 「現在のプロセスが属しているドメインのドメイン名」の最後の要素 |
433 |
|
|
</ul> |
434 |
|
|
|
435 |
|
|
<p>というエントリを探す。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進む。</p> |
436 |
|
|
|
437 |
|
|
<p>(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進む。</p> |
438 |
|
|
|
439 |
|
|
<p>(6) ドメイン別ポリシーから「遷移先ドメイン」を探す。見つからなければ拒否する。</p> |
440 |
|
|
|
441 |
|
|
</td></tr> |
442 |
|
|
<tr><td>環境変数のチェック</td><td> |
443 |
|
|
|
444 |
|
|
<p>(1)全ての環境変数名が「遷移先ドメイン」で許可されているかどうかを検査し、許可されていないものが見つかった場合は拒否する。</p> |
445 |
|
|
|
446 |
|
|
<p>(2)通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移する。</p> |
447 |
|
|
</td></tr> |
448 |
|
|
</table> |
449 |
|
|
|
450 |
kumaneko |
1000 |
<h2><a name="access_logs">4.3 アクセスログについて</a></h2> |
451 |
|
|
|
452 |
kumaneko |
999 |
<hr> |
453 |
kumaneko |
1000 |
|
454 |
|
|
|
455 |
|
|
<h2><a name="word_definition">1.1 用語の定義</a></h2> |
456 |
|
|
<table border="1"> |
457 |
|
|
<tr> |
458 |
|
|
<td>正規化されたパス名</td> |
459 |
|
|
<td>"/" で始まり、シンボリックリンクや "/./" や "//" や "/../" を含まないパス名。(ただし、現在のプロセスに関する情報にアクセスするための "/proc/self/" ディレクトリに関してはそのまま "/proc/self/" とする。)<br> |
460 |
|
|
プロセスが chroot された環境下で動作する場合であっても、 chroot する前のパス名で指定される。<br> |
461 |
|
|
正規化されたパス名は、全てアスキーコードの表示可能な範囲(0x21〜0x7E)で構成されている。 従って、\ 文字(0x5C)は \\ 、その他の表示不可能な文字(0x01〜0x20、0x7F〜0xFF)は \ooo 形式の8進数で表記する。 (例えば、空白文字(0x20)は \040 と表記する。)</td> |
462 |
|
|
</tr> |
463 |
|
|
<tr> |
464 |
|
|
<td>正規化されたディレクトリ名</td> |
465 |
|
|
<td>正規化されたパス名の内、"/"で終わるもの。</td> |
466 |
|
|
</tr> |
467 |
|
|
<tr> |
468 |
|
|
<td>正規化されたファイル名</td> |
469 |
|
|
<td>正規化されたパス名の内、"/"で終わらないもの。<br> |
470 |
|
|
正規化されたファイル名は、ディレクトリ以外の全てのファイルタイプ(通常ファイル、キャラクタ型デバイスファイル、ブロック型デバイスファイル、FIFO、シンボリックリンク、ソケット)を含む。</td> |
471 |
|
|
</tr> |
472 |
|
|
<tr> |
473 |
|
|
<td>プログラム</td> |
474 |
|
|
<td>正規化されたファイル名の内、実行可能なもの。</td> |
475 |
|
|
</tr> |
476 |
|
|
<tr> |
477 |
|
|
<td>ドメイン</td> |
478 |
|
|
<td>MAC(強制アクセス制御)を行うための属性</td> |
479 |
|
|
</tr> |
480 |
|
|
<tr> |
481 |
|
|
<td>遷移先ドメイン</td> |
482 |
|
|
<td>プログラムが正常に開始された場合にプロセスが遷移するドメイン</td> |
483 |
|
|
</tr> |
484 |
|
|
<tr> |
485 |
|
|
<td>操作対象ドメイン</td> |
486 |
|
|
<td>操作対象となるプロセスの属しているドメイン</td> |
487 |
|
|
</tr> |
488 |
|
|
</table> |
489 |
|
|
|
490 |
|
|
<hr> |
491 |
kumaneko |
999 |
<h1><a name="policy_files_and_syntaxes">2. ポリシーファイルの分類と構文</a></h1> |
492 |
|
|
<p>ポリシーファイルは全て /etc/ccs/ ディレクトリに作成しておく。このディレクトリに存在するファイルが /sbin/init の開始時に /sbin/ccs-init によって読み込まれるようになっている。</p> |
493 |
|
|
<h2><a name="manager.conf">2.1 ポリシーマネージャ定義(manager.conf)</a></h2> |
494 |
|
|
<p>全てのプログラムがポリシーの変更を行えるのは危険であるため、このファイルには /proc/ccs/ インタフェースへの書き込みアクセスを許可するプログラムまたはドメインを定義しておく。</p> |
495 |
|
|
<p>このファイルに定義されていないプログラムやドメインからは /proc/ccs/ インタフェースへの書き込みアクセスができない。システム運用時にポリシーの変更を許可しない場合はこのファイルを削除しておく。</p> |
496 |
|
|
<p>(例)<br> |
497 |
|
|
/usr/lib/ccs/loadpolicy<br> |
498 |
|
|
/usr/lib/ccs/editpolicy<br> |
499 |
|
|
/usr/lib/ccs/setlevel<br> |
500 |
|
|
/usr/lib/ccs/setprofile<br> |
501 |
|
|
/usr/lib/ccs/ld-watch<br> |
502 |
|
|
/usr/lib/ccs/ccs-queryd<br> |
503 |
|
|
<kernel> /sbin/mingetty /usr/lib/bin/bash |
504 |
|
|
</p> |
505 |
kumaneko |
1000 |
|
506 |
|
|
<hr> |
507 |
|
|
|
508 |
|
|
<h1><a name="details">詳細</a></h1> |
509 |
|
|
|
510 |
|
|
<h2><a name="profile">/proc/ccs/profile</a></h2> |
511 |
|
|
|
512 |
kumaneko |
999 |
<p>TOMOYO Linuxでは、ファイル以外にもいくつかの項目について強制アクセス制御を行うことができるが、ポリシー管理の負担を減らすために、必要の無い機能を無効化できるようになっている。</p> |
513 |
kumaneko |
1000 |
|
514 |
|
|
<p>有効にしたい機能とそのモードを「プロファイル番号-項目=値」という形式で定義する。プロファイル番号は 0 〜 255 が指定可能である。プロファイルの内容を変更するには setlevel コマンドまたは loadpolicy コマンドを使用する。</p> |
515 |
|
|
|
516 |
|
|
<p>各ドメインには1個のプロファイルが割り当てられる。ドメインにプロファイルを割り当てるには setprofile コマンドまたは editpolicy コマンドまたは loadpolicy コマンドを使用する。</p> |
517 |
|
|
|
518 |
|
|
<p>現在ドメインに割り当てられているプロファイル番号は editpolicy コマンドで確認できる。<br> |
519 |
|
|
現在動作中のプロセスに割り当てられているプロファイル番号は ccstree コマンドで確認できる。<br> |
520 |
|
|
現在のポリシーを savepolicy コマンドで保存した場合、<a href="#domain_policy_use_profile">use_profile</a>というキーワードに保持される。</p> |
521 |
|
|
|
522 |
|
|
<h3><a name="profile_MAC_FOR_FILE">MAC_FOR_FILE</a></h3> |
523 |
|
|
|
524 |
|
|
<p>ファイルに対する強制アクセス制御のレベルを指定する。</p> |
525 |
|
|
|
526 |
kumaneko |
999 |
<table border="1"> |
527 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
528 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
529 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
530 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
531 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
532 |
kumaneko |
999 |
</table> |
533 |
kumaneko |
1000 |
|
534 |
|
|
<h3><a name="profile_MAC_FOR_ARGV0">MAC_FOR_ARGV0</a></h3> |
535 |
|
|
|
536 |
|
|
<p>プログラム実行時の argv[0] に対する強制アクセス制御のレベルを指定する。</p> |
537 |
|
|
|
538 |
kumaneko |
999 |
<table border="1"> |
539 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
540 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
541 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
542 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
543 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
544 |
kumaneko |
999 |
</table> |
545 |
kumaneko |
1000 |
|
546 |
|
|
<h3><a name="profile_MAC_FOR_ENV">MAC_FOR_ENV</a></h3> |
547 |
|
|
|
548 |
|
|
<p>プログラム実行時の環境変数名に対する強制アクセス制御のレベルを指定する。</p> |
549 |
|
|
|
550 |
kumaneko |
999 |
<table border="1"> |
551 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
552 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
553 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
554 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
555 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
556 |
kumaneko |
999 |
</table> |
557 |
kumaneko |
1000 |
|
558 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_create">MAC_FOR_CAPABILITY::inet_tcp_create</a></h3> |
559 |
|
|
|
560 |
|
|
<p>TCP ソケットの使用に対する強制アクセス制御のレベルを指定する。</p> |
561 |
|
|
|
562 |
kumaneko |
999 |
<table border="1"> |
563 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
564 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
565 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
566 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
567 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
568 |
kumaneko |
999 |
</table> |
569 |
kumaneko |
1000 |
|
570 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_listen">MAC_FOR_CAPABILITY::inet_tcp_listen</a></h3> |
571 |
|
|
|
572 |
|
|
<p>TCP ソケットの listenに対する強制アクセス制御のレベルを指定する。</p> |
573 |
|
|
|
574 |
kumaneko |
999 |
<table border="1"> |
575 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
576 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
577 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
578 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
579 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
580 |
kumaneko |
999 |
</table> |
581 |
kumaneko |
1000 |
|
582 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::inet_tcp_connect">MAC_FOR_CAPABILITY::inet_tcp_connect</a></h3> |
583 |
|
|
|
584 |
|
|
<p>TCP ソケットの connectに対する強制アクセス制御のレベルを指定する。</p> |
585 |
|
|
|
586 |
kumaneko |
999 |
<table border="1"> |
587 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
588 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
589 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
590 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
591 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
592 |
kumaneko |
999 |
</table> |
593 |
kumaneko |
1000 |
|
594 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_udp">MAC_FOR_CAPABILITY::use_inet_udp</a></h3> |
595 |
|
|
|
596 |
|
|
<p>UDP ソケットの使用に対する強制アクセス制御のレベルを指定する。</p> |
597 |
|
|
|
598 |
kumaneko |
999 |
<table border="1"> |
599 |
kumaneko |
1000 |
<tr><td>値</td><td>内容</td></tr> |
600 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
601 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
602 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
603 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
604 |
kumaneko |
999 |
</table> |
605 |
|
|
|
606 |
kumaneko |
1000 |
<h3><a name="profile_MAC_FOR_CAPABILITY::use_inet_ip">MAC_FOR_CAPABILITY::use_inet_ip</a></h3> |
607 |
|
|
|
608 |
|
|
<p>RAW ソケットの使用に対する強制アクセス制御のレベルを指定する。</p> |
609 |
|
|
|
610 |
|
|
<table border="1"> |
611 |
|
|
<tr><td>値</td><td>内容</td></tr> |
612 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
613 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
614 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
615 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
616 |
|
|
</table> |
617 |
|
|
|
618 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::use_route">MAC_FOR_CAPABILITY::use_route</a></h3> |
619 |
|
|
|
620 |
|
|
<p>ROUTE ソケットの使用に対する強制アクセス制御のレベルを指定する。</p> |
621 |
|
|
|
622 |
|
|
<table border="1"> |
623 |
|
|
<tr><td>値</td><td>内容</td></tr> |
624 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
625 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
626 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
627 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
628 |
|
|
</table> |
629 |
|
|
|
630 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::use_packet">MAC_FOR_CAPABILITY::use_packet</a></h3> |
631 |
|
|
|
632 |
|
|
<p>PACKET ソケットの使用に対する強制アクセス制御のレベルを指定する。</p> |
633 |
|
|
|
634 |
|
|
<table border="1"> |
635 |
|
|
<tr><td>値</td><td>内容</td></tr> |
636 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
637 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
638 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
639 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
640 |
|
|
</table> |
641 |
|
|
|
642 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::use_kernel_module">MAC_FOR_CAPABILITY::use_kernel_module</a></h3> |
643 |
|
|
|
644 |
|
|
<p>create_module(2) init_module(2) delete_module(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
645 |
|
|
|
646 |
|
|
<table border="1"> |
647 |
|
|
<tr><td>値</td><td>内容</td></tr> |
648 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
649 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
650 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
651 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
652 |
|
|
</table> |
653 |
|
|
|
654 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::create_fifo">MAC_FOR_CAPABILITY::create_fifo</a></h3> |
655 |
|
|
|
656 |
|
|
<p>mknod(2) で FIFO の作成に対する強制アクセス制御のレベルを指定する。</p> |
657 |
|
|
|
658 |
|
|
<table border="1"> |
659 |
|
|
<tr><td>値</td><td>内容</td></tr> |
660 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
661 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
662 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
663 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
664 |
|
|
</table> |
665 |
|
|
|
666 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::create_block_dev">MAC_FOR_CAPABILITY::create_block_dev</a></h3> |
667 |
|
|
|
668 |
|
|
<p>mknod(2) でブロック型デバイスの作成に対する強制アクセス制御のレベルを指定する。</p> |
669 |
|
|
|
670 |
|
|
<table border="1"> |
671 |
|
|
<tr><td>値</td><td>内容</td></tr> |
672 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
673 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
674 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
675 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
676 |
|
|
</table> |
677 |
|
|
|
678 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::create_char_dev">MAC_FOR_CAPABILITY::create_char_dev</a></h3> |
679 |
|
|
|
680 |
|
|
<p>mknod(2) でキャラクタ型デバイスの作成に対する強制アクセス制御のレベルを指定する。</p> |
681 |
|
|
|
682 |
|
|
<table border="1"> |
683 |
|
|
<tr><td>値</td><td>内容</td></tr> |
684 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
685 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
686 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
687 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
688 |
|
|
</table> |
689 |
|
|
|
690 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::create_unix_socket">MAC_FOR_CAPABILITY::create_unix_socket</a></h3> |
691 |
|
|
|
692 |
|
|
<p>mknod(2) で UNIX ドメインソケットの作成に対する強制アクセス制御のレベルを指定する。</p> |
693 |
|
|
|
694 |
|
|
<table border="1"> |
695 |
|
|
<tr><td>値</td><td>内容</td></tr> |
696 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
697 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
698 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
699 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
700 |
|
|
</table> |
701 |
|
|
|
702 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_MOUNT">MAC_FOR_CAPABILITY::SYS_MOUNT</a></h3> |
703 |
|
|
|
704 |
|
|
<p>mount(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
705 |
|
|
|
706 |
|
|
<table border="1"> |
707 |
|
|
<tr><td>値</td><td>内容</td></tr> |
708 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
709 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
710 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
711 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
712 |
|
|
</table> |
713 |
|
|
|
714 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UMOUNT">MAC_FOR_CAPABILITY::SYS_UMOUNT</a></h3> |
715 |
|
|
|
716 |
|
|
<p>umount(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
717 |
|
|
|
718 |
|
|
<table border="1"> |
719 |
|
|
<tr><td>値</td><td>内容</td></tr> |
720 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
721 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
722 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
723 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
724 |
|
|
</table> |
725 |
|
|
|
726 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_REBOOT">MAC_FOR_CAPABILITY::SYS_REBOOT</a></h3> |
727 |
|
|
|
728 |
|
|
<p>reboot(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
729 |
|
|
|
730 |
|
|
<table border="1"> |
731 |
|
|
<tr><td>値</td><td>内容</td></tr> |
732 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
733 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
734 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
735 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
736 |
|
|
</table> |
737 |
|
|
|
738 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHROOT">MAC_FOR_CAPABILITY::SYS_CHROOT</a></h3> |
739 |
|
|
|
740 |
|
|
<p>chroot(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
741 |
|
|
|
742 |
|
|
<table border="1"> |
743 |
|
|
<tr><td>値</td><td>内容</td></tr> |
744 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
745 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
746 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
747 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
748 |
|
|
</table> |
749 |
|
|
|
750 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KILL">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3> |
751 |
|
|
|
752 |
|
|
<p>0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用に対する強制アクセス制御のレベルを指定する。</p> |
753 |
|
|
|
754 |
|
|
<table border="1"> |
755 |
|
|
<tr><td>値</td><td>内容</td></tr> |
756 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
757 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
758 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
759 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
760 |
|
|
</table> |
761 |
|
|
|
762 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_VHANGUP">MAC_FOR_CAPABILITY::SYS_VHANGUP</a></h3> |
763 |
|
|
|
764 |
|
|
<p>vhangup(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
765 |
|
|
|
766 |
|
|
<table border="1"> |
767 |
|
|
<tr><td>値</td><td>内容</td></tr> |
768 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
769 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
770 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
771 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
772 |
|
|
</table> |
773 |
|
|
|
774 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_TIME">MAC_FOR_CAPABILITY::SYS_TIME</a></h3> |
775 |
|
|
|
776 |
|
|
<p>stime(2) settimeofday(2) adjtimex(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
777 |
|
|
|
778 |
|
|
<table border="1"> |
779 |
|
|
<tr><td>値</td><td>内容</td></tr> |
780 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
781 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
782 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
783 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
784 |
|
|
</table> |
785 |
|
|
|
786 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_NICE">MAC_FOR_CAPABILITY::SYS_NICE</a></h3> |
787 |
|
|
|
788 |
|
|
<p>nice(2) setpriority(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
789 |
|
|
|
790 |
|
|
<table border="1"> |
791 |
|
|
<tr><td>値</td><td>内容</td></tr> |
792 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
793 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
794 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
795 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
796 |
|
|
</table> |
797 |
|
|
|
798 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SETHOSTNAME">MAC_FOR_CAPABILITY::SYS_SETHOSTNAME</a></h3> |
799 |
|
|
|
800 |
|
|
<p>sethostname(2) setdomainname(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
801 |
|
|
|
802 |
|
|
<table border="1"> |
803 |
|
|
<tr><td>値</td><td>内容</td></tr> |
804 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
805 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
806 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
807 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
808 |
|
|
</table> |
809 |
|
|
|
810 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_LINK">MAC_FOR_CAPABILITY::SYS_LINK</a></h3> |
811 |
|
|
|
812 |
|
|
<p>link(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
813 |
|
|
|
814 |
|
|
<table border="1"> |
815 |
|
|
<tr><td>値</td><td>内容</td></tr> |
816 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
817 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
818 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
819 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
820 |
|
|
</table> |
821 |
|
|
|
822 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_SYMLINK">MAC_FOR_CAPABILITY::SYS_SYMLINK</a></h3> |
823 |
|
|
|
824 |
|
|
<p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
825 |
|
|
|
826 |
|
|
<table border="1"> |
827 |
|
|
<tr><td>値</td><td>内容</td></tr> |
828 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
829 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
830 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
831 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
832 |
|
|
</table> |
833 |
|
|
|
834 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_RENAME">MAC_FOR_CAPABILITY::SYS_RENAME</a></h3> |
835 |
|
|
|
836 |
|
|
<p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
837 |
|
|
|
838 |
|
|
<table border="1"> |
839 |
|
|
<tr><td>値</td><td>内容</td></tr> |
840 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
841 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
842 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
843 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
844 |
|
|
</table> |
845 |
|
|
|
846 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_UNLINK">MAC_FOR_CAPABILITY::SYS_UNLINK</a></h3> |
847 |
|
|
|
848 |
|
|
<p>symlink(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
849 |
|
|
|
850 |
|
|
<table border="1"> |
851 |
|
|
<tr><td>値</td><td>内容</td></tr> |
852 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
853 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
854 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
855 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
856 |
|
|
</table> |
857 |
|
|
|
858 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHMOD">MAC_FOR_CAPABILITY::SYS_CHMOD</a></h3> |
859 |
|
|
|
860 |
|
|
<p>chmod(2) fchmod(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
861 |
|
|
|
862 |
|
|
<table border="1"> |
863 |
|
|
<tr><td>値</td><td>内容</td></tr> |
864 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
865 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
866 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
867 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
868 |
|
|
</table> |
869 |
|
|
|
870 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_CHOWN">MAC_FOR_CAPABILITY::SYS_CHOWN</a></h3> |
871 |
|
|
|
872 |
|
|
<p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
873 |
|
|
|
874 |
|
|
<table border="1"> |
875 |
|
|
<tr><td>値</td><td>内容</td></tr> |
876 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
877 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
878 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
879 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
880 |
|
|
</table> |
881 |
|
|
|
882 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_IOCTL">MAC_FOR_CAPABILITY::SYS_IOCTL</a></h3> |
883 |
|
|
|
884 |
|
|
<p>chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
885 |
|
|
|
886 |
|
|
<table border="1"> |
887 |
|
|
<tr><td>値</td><td>内容</td></tr> |
888 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
889 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
890 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
891 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
892 |
|
|
</table> |
893 |
|
|
|
894 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD">MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD</a></h3> |
895 |
|
|
|
896 |
|
|
<p>kexec_load(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
897 |
|
|
|
898 |
|
|
<table border="1"> |
899 |
|
|
<tr><td>値</td><td>内容</td></tr> |
900 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
901 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
902 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
903 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
904 |
|
|
</table> |
905 |
|
|
|
906 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT">MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT</a></h3> |
907 |
|
|
|
908 |
|
|
<p>pivot_root(2) の使用に対する強制アクセス制御のレベルを指定する。</p> |
909 |
|
|
|
910 |
|
|
<table border="1"> |
911 |
|
|
<tr><td>値</td><td>内容</td></tr> |
912 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
913 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
914 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
915 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
916 |
|
|
</table> |
917 |
|
|
|
918 |
|
|
<h3><a name="profile_MAC_FOR_CAPABILITY::SYS_PTRACE">MAC_FOR_CAPABILITY::SYS_PTRACE</a></h3> |
919 |
|
|
|
920 |
|
|
<p>ptrace(2) の使用に対する強制アクセス制御のレベルを指定する。<br> |
921 |
|
|
|
922 |
|
|
<table border="1"> |
923 |
|
|
<tr><td>値</td><td>内容</td></tr> |
924 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
925 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
926 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
927 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
928 |
|
|
</table> |
929 |
|
|
|
930 |
|
|
<h3><a name="profile_MAC_FOR_NETWORK">MAC_FOR_NETWORK</a></h3> |
931 |
|
|
|
932 |
|
|
<p>ネットワークに対する強制アクセス制御のレベルを指定する。</p> |
933 |
|
|
|
934 |
|
|
<table border="1"> |
935 |
|
|
<tr><td>値</td><td>内容</td></tr> |
936 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
937 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
938 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
939 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
940 |
|
|
</table> |
941 |
|
|
|
942 |
|
|
<h3><a name="profile_MAC_FOR_SIGNAL">MAC_FOR_SIGNAL</a></h3> |
943 |
|
|
|
944 |
|
|
<p>シグナルの送信に対する強制アクセス制御のレベルを指定する。</p> |
945 |
|
|
|
946 |
|
|
<table border="1"> |
947 |
|
|
<tr><td>値</td><td>内容</td></tr> |
948 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
949 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
950 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
951 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
952 |
|
|
</table> |
953 |
|
|
|
954 |
|
|
<h3><a name="profile_DENY_CONCEAL_MOUNT">DENY_CONCEAL_MOUNT</a></h3> |
955 |
|
|
<p>既存のマウントを隠蔽するようなマウントを禁止する。</p> |
956 |
|
|
|
957 |
|
|
<table border="1"> |
958 |
|
|
<tr><td>値</td><td>内容</td></tr> |
959 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
960 |
|
|
<tr><td>1 or 2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
961 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
962 |
|
|
</table> |
963 |
|
|
|
964 |
|
|
<h3><a name="profile_RESTRICT_CHROOT">RESTRICT_CHROOT</a></h3> |
965 |
|
|
|
966 |
|
|
<p>chroot で移動可能なディレクトリの制限を有効にする。</p> |
967 |
|
|
|
968 |
|
|
<table border="1"> |
969 |
|
|
<tr><td>値</td><td>内容</td></tr> |
970 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
971 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
972 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
973 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
974 |
|
|
</table> |
975 |
|
|
|
976 |
|
|
<h3><a name="profile_RESTRICT_MOUNT">RESTRICT_MOUNT</a></h3> |
977 |
|
|
|
978 |
|
|
<p>mount で指定可能なパラメータの制限を有効にする。</p> |
979 |
|
|
|
980 |
|
|
<table border="1"> |
981 |
|
|
<tr><td>値</td><td>内容</td></tr> |
982 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
983 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
984 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
985 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
986 |
|
|
</table> |
987 |
|
|
|
988 |
|
|
<h3><a name="profile_RESTRICT_UNMOUNT">RESTRICT_UNMOUNT</a></h3> |
989 |
|
|
|
990 |
|
|
<p>指定されたディレクトリのアンマウントを禁止する。</p> |
991 |
|
|
|
992 |
|
|
<table border="1"> |
993 |
|
|
<tr><td>値</td><td>内容</td></tr> |
994 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
995 |
|
|
<tr><td>1 or 2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
996 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
997 |
|
|
</table> |
998 |
|
|
|
999 |
|
|
<h3><a name="profile_RESTRICT_PIVOT_ROOT">RESTRICT_PIVOT_ROOT</a></h3> |
1000 |
|
|
|
1001 |
|
|
<p>pivot_root で交換可能なディレクトリの制限を有効にする。</p> |
1002 |
|
|
|
1003 |
|
|
<table border="1"> |
1004 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1005 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
1006 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
1007 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
1008 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
1009 |
|
|
</table> |
1010 |
|
|
|
1011 |
|
|
<h3><a name="profile_RESTRICT_AUTOBIND">RESTRICT_AUTOBIND</a></h3> |
1012 |
|
|
|
1013 |
|
|
<p>ローカルのポート番号を自動選択させる際に特定のポート番号を選択させないようにするかどうかを指定する。</p> |
1014 |
|
|
|
1015 |
|
|
<table border="1"> |
1016 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1017 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
1018 |
|
|
<tr><td>1</td><td>有効。ローカルのポート番号を自動選択させる際に、特定のポート番号を選択させないようにする。</td></tr> |
1019 |
|
|
</table> |
1020 |
|
|
|
1021 |
|
|
<h3><a name="profile_MAX_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a></h3> |
1022 |
|
|
|
1023 |
|
|
<p>学習モードに於いて自動的に追加されるアクセス許可の上限を指定する。デフォルトは 2048 件。</p> |
1024 |
|
|
|
1025 |
|
|
<h3><a name="profile_MAX_GRANT_LOG">MAX_GRANT_LOG</a></h3> |
1026 |
|
|
|
1027 |
|
|
<p>カーネル内に保持する、ポリシーによって許可されたアクセス要求のログの件数を指定する。デフォルトは 1024 件。</p> |
1028 |
|
|
|
1029 |
|
|
<h3><a name="profile_">MAX_REJECT_LOG</a></h3> |
1030 |
|
|
|
1031 |
|
|
<p>カーネル内に保持する、ポリシーによって許可されなかったアクセス要求のログの件数を指定する。デフォルトは 1024 件。</p> |
1032 |
|
|
|
1033 |
|
|
<h3><a name="profile_TOMOYO_VERBOSE">TOMOYO_VERBOSE</a></h3> |
1034 |
|
|
|
1035 |
|
|
<p>ドメイン別ポリシーに対する違反を syslog に表示するかどうかを指定する。</p> |
1036 |
|
|
|
1037 |
|
|
<table border="1"> |
1038 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1039 |
|
|
<tr><td>0</td><td>ドメイン別ポリシーに対する違反を表示しない。</td></tr> |
1040 |
|
|
<tr><td>1</td><td>ドメイン別ポリシーに対する違反を表示する。</td></tr> |
1041 |
|
|
</table> |
1042 |
|
|
|
1043 |
|
|
<h3><a name="profile_ALLOW_ENFORCE_GRACE">ALLOW_ENFORCE_GRACE</a></h3> |
1044 |
|
|
|
1045 |
|
|
<p>強制モードに於いてポリシーに違反したアクセス要求を対話的に許可できるようにするかどうかを指定する。</p> |
1046 |
|
|
|
1047 |
|
|
<table border="1"> |
1048 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1049 |
|
|
<tr><td>0</td><td>強制モードでポリシーに違反したら直ちに拒否する。</td></tr> |
1050 |
|
|
<tr><td>1</td><td>強制モードでポリシーに違反しても、対話的な操作により許可することを可能にする。</td></tr> |
1051 |
|
|
</table> |
1052 |
|
|
|
1053 |
|
|
<h3><a name="profile_SLEEP_PERIOD">SLEEP_PERIOD</a></h3> |
1054 |
|
|
|
1055 |
|
|
<p>強制モードに於いてポリシー違反が発生した場合にスリープさせるかどうかを指定する。</p> |
1056 |
|
|
|
1057 |
|
|
<table border="1"> |
1058 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1059 |
|
|
<tr><td>0 〜 3000</td><td>スリープさせる時間を0.1秒単位で指定する。デフォルトは0。</td></tr> |
1060 |
|
|
</table> |
1061 |
|
|
|
1062 |
|
|
<h3><a name="profile_ALT_EXEC">ALT_EXEC</a></h3> |
1063 |
|
|
|
1064 |
|
|
<p>強制モードに於いて許可されていないプログラムの実行が要求された場合に、代わりに実行するプログラムを指定する。デフォルトは要求されたプログラムの実行を拒否する。</p> |
1065 |
|
|
|
1066 |
|
|
<table border="1"> |
1067 |
|
|
<tr><td>値</td><td>内容</td></tr> |
1068 |
|
|
<tr><td>0</td><td>無効。通常のカーネルと同様に動作する。</td></tr> |
1069 |
|
|
<tr><td>1</td><td>学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。</td></tr> |
1070 |
|
|
<tr><td>2</td><td>許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。</td></tr> |
1071 |
|
|
<tr><td>3</td><td>強制モード。ポリシーに違反したらエラーとする。</td></tr> |
1072 |
|
|
</table> |
1073 |
|
|
|
1074 |
|
|
<h2><a name="system_policy">/proc/ccs/system_policy</a></h2> |
1075 |
|
|
|
1076 |
|
|
<h3><a name="system_policy_allow_mount">allow_mount</a></h3> |
1077 |
kumaneko |
999 |
<p>マウント許可を指定するには、 allow_mount というディレクティブに続けて、「デバイスファイル マウントポイント ファイルシステム オプション」を指定する。 デバイスファイルを必要とするファイルシステムを指定する場合は、デバイスファイルは正規化されたファイル名でなければいけない。マウントポイントは正規化されたディレクトリ名でなければいけない。オプションは数値で指定する。</p> |
1078 |
|
|
|
1079 |
|
|
<p>「any マウントポイント --remount オプション」と指定すると、「mount -o remount マウントポイント」が許可される。</p> |
1080 |
|
|
|
1081 |
|
|
<p>「複製元 複製先 --bind オプション」と指定すると、「mount --bind 複製元 複製先」が許可される。<br> |
1082 |
|
|
「移動元 移動先 --move オプション」と指定すると、「mount --move 移動元 移動先」が許可される。<br> |
1083 |
|
|
複製元/複製先/移動元/移動先は正規化されたディレクトリ名でなければならない。</p> |
1084 |
|
|
|
1085 |
|
|
<p>カーネル 2.6.15 以降では、 Shared Subtree という機能が利用できる。<br> |
1086 |
|
|
「any マウントポイント --make-unbindable オプション」と指定すると、「mount --make-unbindable マウントポイント」が許可される。<br> |
1087 |
|
|
「any マウントポイント --make-private オプション」と指定すると、「mount --make-private マウントポイント」が許可される。<br> |
1088 |
|
|
「any マウントポイント --make-slave オプション」と指定すると、「mount --make-slave マウントポイント」が許可される。<br> |
1089 |
|
|
「any マウントポイント --make-shared オプション」と指定すると、「mount --make-shared マウントポイント」が許可される。 |
1090 |
|
|
</p> |
1091 |
|
|
|
1092 |
kumaneko |
1000 |
<p>(例)<br> |
1093 |
|
|
allow_mount none /dev/pts/ devpts 0x0<br> |
1094 |
|
|
allow_mount /proc /proc/ proc 0x0<br> |
1095 |
|
|
allow_mount usbdevfs /proc/bus/usb/ usbdevfs 0x0<br> |
1096 |
|
|
allow_mount none /data/ tmpfs 0xE<br> |
1097 |
|
|
allow_mount none /dev/shm/ tmpfs 0xE<br> |
1098 |
|
|
allow_mount /dev/hdc /var/www/ ext2 0xF<br> |
1099 |
|
|
allow_mount any / --remount 0x0</p> |
1100 |
|
|
|
1101 |
|
|
<h3><a name="system_policy_deny_unmount">deny_unmount</a></h3> |
1102 |
kumaneko |
999 |
<p>アンマウント禁止を指定するには、 deny_unmount というディレクティブに続けて、アンマウントを許可しない正規化されたディレクトリ名を指定する。<br> |
1103 |
|
|
通常、 /sbin/mingetty が使用する /dev/tty? を含む /dev/ ディレクトリと、リモートログインする場合に pty デバイスファイルが作成される /dev/pts/ ディレクトリを指定する。</p> |
1104 |
|
|
<p>/dev が読み込み専用になってしまったり、 /dev/pts がアンマウントされてしまうと、ログインができなくなる。そのため、 / が読み込み専用のシステムでは、 /dev/ や /dev/pts/ がアンマウントされないようにしなければならない。</p> |
1105 |
kumaneko |
1000 |
|
1106 |
|
|
<p>(例)<br> |
1107 |
|
|
deny_unmount /dev/<br> |
1108 |
|
|
deny_unmount /dev/pts/<br> |
1109 |
|
|
deny_unmount /proc/</p> |
1110 |
|
|
|
1111 |
|
|
<h3><a name="system_policy_allow_chroot">allow_chroot</a></h3> |
1112 |
kumaneko |
999 |
<p>chroot 許可を指定するには、 allow_chroot というディレクティブに続けて、 chroot で移動することを許可したい正規化されたディレクトリ名を指定する。<br> |
1113 |
|
|
通常、 sshd が使用する /var/empty/sshd/ を指定する。 その他に chroot 環境で動かしたいアプリケーションや、 chroot を行うアプリケーション( vsftpd の場合 /usr/share/empty/ )が存在する場合は、それらも指定する。</p> |
1114 |
kumaneko |
1000 |
|
1115 |
|
|
<p>(例)<br> |
1116 |
|
|
allow_chroot /var/empty/sshd/<br> |
1117 |
|
|
allow_chroot /usr/share/empty/<br> |
1118 |
|
|
allow_chroot /var/www/html/<br> |
1119 |
|
|
allow_chroot /</p> |
1120 |
|
|
|
1121 |
|
|
<h3><a name="system_policy_allow_pivot_root">allow_pivot_root</a></h3> |
1122 |
kumaneko |
999 |
<p>pivot_root 許可を指定するには、 allow_pivot_root というディレクティブに続けて、新しいルートとなる正規化されたディレクトリ名と古いルートディレクトリとなる正規化されたディレクトリ名を指定する。<br> |
1123 |
|
|
通常、このディレクティブを使う必要は無い。</p> |
1124 |
kumaneko |
1000 |
|
1125 |
|
|
<h3><a name="system_policy_deny_autobind">deny_autobind</a></h3> |
1126 |
kumaneko |
999 |
<p>ローカルポートの自動選択で特定のポート番号が選択させるのを禁止するには、 deny_autobind というディレクティブに続けて、ローカルポート番号を指定する。 このディレクティブは、特定のポート番号が一時的な用途で割り当てられるのを防ぐのが狙いである。 例えば、一部のプロキシサーバはポート8080を使用するので、ポート8080が一時的な用途のために割り当てられるべきではない。</p> |
1127 |
|
|
|
1128 |
kumaneko |
1000 |
<p>(例)<br> |
1129 |
|
|
deny_autobind 1-1023<br> |
1130 |
|
|
deny_autobind 8080</p> |
1131 |
kumaneko |
999 |
|
1132 |
kumaneko |
1000 |
<h2><a name="domain_policy">/proc/ccs/domain_policy</a></h2> |
1133 |
|
|
|
1134 |
|
|
<p>このファイルでは、全てのドメインを定義し、各ドメインに対して与えるアクセス許可を定義する。</p> |
1135 |
|
|
|
1136 |
kumaneko |
999 |
<p>ドメインを定義している行(<kernel>で始まる行)の次行から次のドメインを定義している行の前行までが、そのドメインに対するアクセス許可である。</p> |
1137 |
|
|
|
1138 |
kumaneko |
1000 |
<p>それぞれのアクセス許可について、必要に応じて追加の条件を指定することができる。そのための構文は<a href="#conditional_acl">条件付きアクセス許可の指定</a>で説明する。さらに、必要に応じてプロセスの状態を切り替え、プロセスの状態も条件として使うための方法を<a href="#stateful_acl">ステートフルなアクセス許可の指定</a>で説明する。</p> |
1139 |
kumaneko |
999 |
|
1140 |
kumaneko |
1000 |
<h3><a name="domain_policy_allow_execute">allow_execute</a></h3> |
1141 |
|
|
<p>指定されたパス名を実行することを許可する。パス名にワイルドカードを使用することは認められない。ワイルドカードで指定しなければ対応できない場合には、プログラム名をグループ化してからアクセス許可を与える。</p> |
1142 |
|
|
<p>(例)allow_execute /bin/ls</p> |
1143 |
|
|
<p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_aggregator">aggregator</a></p> |
1144 |
kumaneko |
999 |
|
1145 |
kumaneko |
1000 |
<h3><a name="domain_policy_allow_write">allow_write</a></h3> |
1146 |
|
|
<p>指定されたパス名を書き込みモードでオープンすることを許可する。</p> |
1147 |
|
|
<p>(例) allow_write /dev/null</p> |
1148 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1149 |
|
|
|
1150 |
|
|
<h3><a name="domain_policy_allow_read">allow_read</a></h3> |
1151 |
|
|
<p>指定されたパス名を読み込みモードでオープンすることを許可する。</p> |
1152 |
|
|
<p>(例) allow_read /proc/meminfo</p> |
1153 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1154 |
|
|
|
1155 |
|
|
<h3><a name="domain_policy_allow_read/write">allow_read/write</a></h3> |
1156 |
|
|
<p>指定されたパス名を読み書きモードでオープンすることを許可する。</p> |
1157 |
|
|
<p>(例) allow_read/write /dev/null</p> |
1158 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1159 |
|
|
|
1160 |
|
|
<h3><a name="domain_policy_allow_create">allow_create</a></h3> |
1161 |
|
|
<p>指定されたパス名のファイルを新規作成することを許可する。</p> |
1162 |
|
|
<p>(例) allow_create /var/lock/subsys/crond</p> |
1163 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1164 |
|
|
|
1165 |
|
|
<h3><a name="domain_policy_allow_unlink">allow_unlink</a></h3> |
1166 |
|
|
<p>指定されたパス名を削除することを許可する。</p> |
1167 |
|
|
<p>(例) allow_unlink /var/lock/subsys/crond</p> |
1168 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1169 |
|
|
|
1170 |
|
|
<h3><a name="domain_policy_allow_mkdir">allow_mkdir</a></h3> |
1171 |
|
|
<p>パス名で指定されたディレクトリを作成することを許可する。</p> |
1172 |
|
|
<p>(例) allow_mkdir /tmp/logwatch.\*/</p> |
1173 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1174 |
|
|
|
1175 |
|
|
<h3><a name="domain_policy_allow_rmdir">allow_rmdir</a></h3> |
1176 |
|
|
<p>ディレクトリの削除を許可する。</p> |
1177 |
|
|
<p>(例) allow_rmdir /tmp/logwatch.\*/</p> |
1178 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1179 |
|
|
|
1180 |
|
|
<h3><a name="domain_policy_allow_mkfifo">allow_mkfifo</a></h3> |
1181 |
|
|
<p>FIFO の作成を許可する。</p> |
1182 |
|
|
<p>(例) allow_mkfifo /dev/initctl</p> |
1183 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1184 |
|
|
|
1185 |
|
|
<h3><a name="domain_policy_allow_mksock">allow_mksock</a></h3> |
1186 |
|
|
<p>UNIX ドメインソケットの作成を許可する。</p> |
1187 |
|
|
<p>(例) allow_mksock /dev/log</p> |
1188 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1189 |
|
|
|
1190 |
|
|
<h3><a name="domain_policy_allow_mkblock">allow_mkblock</a></h3> |
1191 |
|
|
<p>ブロック型デバイスファイルの作成を許可する。</p> |
1192 |
|
|
<p>(例) allow_mkblock /dev/\*</p> |
1193 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1194 |
|
|
|
1195 |
|
|
<h3><a name="domain_policy_allow_mkchar">allow_mkchar</a></h3> |
1196 |
|
|
<p>キャラクタ型デバイスファイルの作成を許可する。</p> |
1197 |
|
|
<p>(例) allow_mkchar /dev/\*</p> |
1198 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1199 |
|
|
|
1200 |
|
|
<h3><a name="domain_policy_allow_truncate">allow_truncate</a></h3> |
1201 |
|
|
<p>ファイルの切り詰めと伸長を許可する。</p> |
1202 |
|
|
<p>(例) allow_truncate /etc/mtab</p> |
1203 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1204 |
|
|
|
1205 |
|
|
<h3><a name="domain_policy_allow_symlink">allow_symlink</a></h3> |
1206 |
|
|
<p>シンボリックリンクの作成を許可する。</p> |
1207 |
|
|
<p>(例) allow_symlink /dev/cdrom</p> |
1208 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1209 |
|
|
|
1210 |
|
|
<h3><a name="domain_policy_allow_link">allow_link</a></h3> |
1211 |
|
|
<p>ハードリンクの作成を許可する。</p> |
1212 |
|
|
<p>(例) allow_link /etc/mtab~\$ /etc/mtab~</p> |
1213 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1214 |
|
|
|
1215 |
|
|
<h3><a name="domain_policy_allow_rename">allow_rename</a></h3> |
1216 |
|
|
<p>ファイル名の変更を許可する。</p> |
1217 |
|
|
<p>(例) allow_rename /etc/mtab.tmp /etc/mtab</p> |
1218 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a></p> |
1219 |
|
|
|
1220 |
|
|
<h3><a name="domain_policy_allow_rewrite">allow_rewrite</a></h3> |
1221 |
|
|
<p><a href="#exception_policy_deny_rewrite">deny_rewrite</a>によりファイルの内容の上書きが禁止されているパス名が指すファイル内容の上書きを許可する。</p> |
1222 |
|
|
<p>(例) allow_rewrite /var/log/messages</p> |
1223 |
|
|
<p>関連項目:<a href="#exception_policy_path_group">path_group</a> <a href="#exception_policy_deny_rewrite">deny_rewrite</a></p> |
1224 |
|
|
|
1225 |
|
|
<h3><a name="domain_policy_allow_argv0">allow_argv0</a></h3> |
1226 |
|
|
|
1227 |
kumaneko |
999 |
<p>argv[0] の組み合わせを制限するには、 allow_argv0 というディレクティブに続けて、「正規化されたファイル名」と「argv[0] の最後の / より後ろの部分」を指定する。</p> |
1228 |
|
|
|
1229 |
|
|
<p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。いくつかのプログラム(例えば busybox )は argv[0] の内容によって振る舞いを変化させる。 |
1230 |
|
|
プログラムへのシンボリックリンクを経由してプログラムを実行する場合、 TOMOYO Linux のドメイン遷移は filename が指すパス名を正規化した内容に基づいて行われるのに対し、振る舞いは argv[0] (通常は filename が指すパス名と同じ内容)に基づいて行われてしまう。例えば、 /bin/ls と /bin/cat が busybox へのハードリンクとして提供されている環境において、 /tmp/cat という /bin/ls へのシンボリックリンクを作成して /tmp/cat を実行することにより、 /bin/ls のためのドメインで cat として振舞うことができてしまうという抜け穴になる。</p> |
1231 |
|
|
<p>このディレクティブの目的は、 filename と argv[0] の内容の組み合わせを制限することでそのような抜け穴を塞ぐことである。</p> |
1232 |
|
|
|
1233 |
kumaneko |
1000 |
<h3><a name="domain_policy_allow_env">allow_env</a></h3> |
1234 |
kumaneko |
999 |
|
1235 |
|
|
<p>環境変数名を制限するには、 allow_env というディレクティブに続けて、「環境変数名」を指定する。</p> |
1236 |
|
|
|
1237 |
|
|
<p>プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。多くのプログラムは envp[] の内容によって振る舞いを変化させる。</p> |
1238 |
|
|
<p>このディレクティブの目的は、実行されるプログラムに渡される環境変数を制限することである。</p> |
1239 |
|
|
|
1240 |
kumaneko |
1000 |
<p>関連項目:<a href="#exception_policy_allow_env">allow_env</a></p> |
1241 |
|
|
|
1242 |
|
|
<h3><a name="domain_policy_allow_capability">allow_capability</a></h3> |
1243 |
|
|
|
1244 |
kumaneko |
999 |
<p>ケイパビリティのアクセス許可を指定するには、 allow_capability というディレクティブに続けて、ケイパビリティを指定する。以下のケイパビリティが指定できる。</p> |
1245 |
kumaneko |
1000 |
|
1246 |
kumaneko |
999 |
<table border="1"> |
1247 |
kumaneko |
1000 |
<tr><td>allow_capability inet_tcp_create</td><td>TCP ソケットの使用を許可</td></tr> |
1248 |
|
|
<tr><td>allow_capability inet_tcp_listen</td><td>TCP ソケットの listen を許可</td></tr> |
1249 |
|
|
<tr><td>allow_capability inet_tcp_connect</td><td>TCP ソケットの connect を許可</td></tr> |
1250 |
|
|
<tr><td>allow_capability use_inet_udp</td><td>UDP ソケットの使用を許可</td></tr> |
1251 |
|
|
<tr><td>allow_capability use_inet_ip</td><td>RAW ソケットの使用を許可</td></tr> |
1252 |
|
|
<tr><td>allow_capability use_route</td><td>ROUTE ソケットの使用を許可</td></tr> |
1253 |
|
|
<tr><td>allow_capability use_packet</td><td>PACKET ソケットの使用を許可</td></tr> |
1254 |
|
|
<tr><td>allow_capability use_kernel_module</td><td>create_module(2) init_module(2) delete_module(2) の使用を許可</td></tr> |
1255 |
|
|
<tr><td>allow_capability create_fifo</td><td>mknod(2) で FIFO の作成を許可</td></tr> |
1256 |
|
|
<tr><td>allow_capability create_block_dev</td><td>mknod(2) でブロック型デバイスの作成を許可</td></tr> |
1257 |
|
|
<tr><td>allow_capability create_char_dev</td><td>mknod(2) でキャラクタ型デバイスの作成を許可</td></tr> |
1258 |
|
|
<tr><td>allow_capability create_unix_socket</td><td>mknod(2) で UNIX ドメインソケットの作成を許可</td></tr> |
1259 |
|
|
<tr><td>allow_capability SYS_MOUNT</td><td>mount(2) の使用を許可</td></tr> |
1260 |
|
|
<tr><td>allow_capability SYS_UMOUNT</td><td>umount(2) の使用を許可</td></tr> |
1261 |
|
|
<tr><td>allow_capability SYS_REBOOT</td><td>reboot(2) の使用を許可</td></tr> |
1262 |
|
|
<tr><td>allow_capability SYS_CHROOT</td><td>chroot(2) の使用を許可</td></tr> |
1263 |
|
|
<tr><td>allow_capability SYS_KILL</td><td>0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用を許可</td></tr> |
1264 |
|
|
<tr><td>allow_capability SYS_VHANGUP</td><td>vhangup(2) の使用を許可</td></tr> |
1265 |
|
|
<tr><td>allow_capability SYS_TIME</td><td>stime(2) settimeofday(2) adjtimex(2) の使用を許可</td></tr> |
1266 |
|
|
<tr><td>allow_capability SYS_NICE</td><td>nice(2) setpriority(2) の使用を許可</td></tr> |
1267 |
|
|
<tr><td>allow_capability SYS_SETHOSTNAME</td><td>sethostname(2) setdomainname(2) の使用を許可</td></tr> |
1268 |
|
|
<tr><td>allow_capability SYS_LINK</td><td>link(2) の使用を許可</td></tr> |
1269 |
|
|
<tr><td>allow_capability SYS_SYMLINK</td><td>symlink(2) の使用を許可</td></tr> |
1270 |
|
|
<tr><td>allow_capability SYS_RENAME</td><td>rename(2) の使用を許可</td></tr> |
1271 |
|
|
<tr><td>allow_capability SYS_UNLINK</td><td>unlink(2) の使用を許可</td></tr> |
1272 |
|
|
<tr><td>allow_capability SYS_CHMOD</td><td>chmod(2) fchmod(2) の使用を許可</td></tr> |
1273 |
|
|
<tr><td>allow_capability SYS_CHOWN</td><td>chown(2) fchown(2) lchown(2) の使用を許可</td></tr> |
1274 |
|
|
<tr><td>allow_capability SYS_IOCTL</td><td>ioctl(2) compat_sys_ioctl(2) の使用を許可</td></tr> |
1275 |
|
|
<tr><td>allow_capability SYS_KEXEC_LOAD</td><td>kexec_load(2) の使用を許可</td></tr> |
1276 |
|
|
<tr><td>allow_capability SYS_PIVOT_ROOT</td><td>pivot_root(2) の使用を許可</td></tr> |
1277 |
|
|
<tr><td>allow_capability SYS_PTRACE</td><td>ptrace(2) の使用を許可</td></tr> |
1278 |
kumaneko |
999 |
</table> |
1279 |
kumaneko |
1000 |
|
1280 |
kumaneko |
999 |
<p>allow_capability ディレクティブの目的は、プログラムが呼び出すことができるシステムコールを制限することである。幾つかのシステムコールに対しては他のディレクティブやポリシーファイルを使用してより詳細な制限が可能になっている。</p> |
1281 |
|
|
<ul> |
1282 |
kumaneko |
1000 |
<li>作成を許可するキャラクタ型デバイスファイルのパス名を<a href="#domain_policy_allow_mkblock">allow_mkblock</a>ディレクティブを使用して制限することができる。 |
1283 |
|
|
<li>作成を許可するブロック型デバイスファイルのパス名を<a href="#domain_policy_allow_mkchar">allow_mkchar</a>ディレクティブを使用して制限することができる。 |
1284 |
|
|
<li>作成を許可する FIFO のパス名を<a href="#domain_policy_allow_mkfifo">allow_mkfifo</a>ディレクティブを使用して制限することができる。 |
1285 |
|
|
<li>作成を許可する UNIX ドメインソケットのパス名を<a href="#domain_policy_allow_mksock">allow_mksock</a>ディレクティブを使用して制限することができる。 |
1286 |
|
|
<li>作成を許可するシンボリックリンクのパス名を<a href="#domain_policy_allow_symlink">allow_symlink</a>ディレクティブを使用して制限することができる。 |
1287 |
|
|
<li>削除を許可するパス名を<a href="#domain_policy_allow_unlink">allow_unlink</a>ディレクティブを使用して制限することができる。 |
1288 |
|
|
<li>ハードリンクを許可する組み合わせを<a href="#domain_policy_allow_link">allow_link</a>ディレクティブを使用して制限することができる。 |
1289 |
|
|
<li>パス名の変更を許可する組み合わせを<a href="#domain_policy_allow_rename">allow_rename</a>ディレクティブを使用して制限することができる。 |
1290 |
|
|
<li>使用を許可する IP アドレスの範囲ととポート番号の範囲を<a href="#domain_policy_allow_network">allow_network</a>ディレクティブを使用して制限することができる。 |
1291 |
|
|
<li>送信可能なシグナルの番号と送信先のドメインを<a href="#domain_policy_allow_signal">allow_signal</a>ディレクティブを使用して制限することができる。 |
1292 |
|
|
<li>マウントを許可するデバイスおよびマウントポイントを<a href="#system_policy_allow_mount">allow_mount</a>ディレクティブを使用して制限することができる。 |
1293 |
|
|
<li>アンマウントを許可しないマウントポイントを<a href="#system_policy_deny_unmount">deny_unmount</a>ディレクティブを使用して指定することができる。 |
1294 |
|
|
<li>chroot で移動できるディレクトリを<a href="#system_policy_allow_chroot">allow_chroot</a>ディレクティブを使用して制限することができる。 |
1295 |
|
|
<li>pivot_root で交換できるディレクトリを<a href="#system_policy_allpw_pivot_root">allow_pivot_root</a>ディレクティブを使用して制限することができる。 |
1296 |
kumaneko |
999 |
</ul> |
1297 |
kumaneko |
1000 |
|
1298 |
|
|
<h3><a name="domain_policy_allow_network">allow_network</a></h3> |
1299 |
|
|
|
1300 |
kumaneko |
999 |
<p>ネットワークのアクセス許可を指定するには、 allow_network というディレクティブに続けて、プロトコル(TCP UDP RAW の何れか)、 IP アドレス、ポート番号(TCP UDP の場合)またはプロトコル番号(RAW の場合)を指定する。 IPv4 プロトコルおよび IPv6 プロトコルで使用するローカルポート番号が対象である。</p> |
1301 |
|
|
<table border="1"> |
1302 |
|
|
<tr><td>ディレクティブ</td><td>許可されるアクセス</td><td>指定例</td></tr> |
1303 |
|
|
<tr><td>allow_network TCP bind</td><td>ローカルの TCP アドレス/ポートの割り当て</td><td>allow_network TCP bind 0.0.0.0 80</td></tr> |
1304 |
|
|
<tr><td>allow_network TCP listen</td><td>ローカルの TCP アドレス/ポートでの待機</td><td>allow_network TCP listen 0.0.0.0 80</td></tr> |
1305 |
|
|
<tr><td>allow_network TCP accept</td><td>リモートの TCP アドレス/ポートからの接続受付および通信</td><td>allow_network TCP accept 10.0.0.0-10.255.255.255 1024-65535</td></tr> |
1306 |
|
|
<tr><td>allow_network TCP connect</td><td>リモートの TCP アドレス/ポートへの接続および通信</td><td>allow_network TCP connect 127.0.0.1 1024-65535</td></tr> |
1307 |
|
|
<tr><td>allow_network UDP bind</td><td>ローカルの UDP アドレス/ポートの割り当て</td><td>allow_network UDP bind 0.0.0.0 53</td></tr> |
1308 |
|
|
|
1309 |
|
|
<tr><td>allow_network UDP connect</td><td>リモートの UDP アドレス/ポートとの通信</td><td>allow_network UDP connect 127.0.0.1 53</td></tr> |
1310 |
|
|
<tr><td>allow_network RAW bind</td><td>ローカルの IP アドレス/プロトコルの割り当て</td><td>allow_network RAW bind 127.0.0.1 255</td></tr> |
1311 |
|
|
<tr><td>allow_network RAW connect</td><td>リモートの IP アドレス/プロトコルとの通信</td><td>allow_network RAW connect 10.0.0.1 1</td></tr> |
1312 |
|
|
</table> |
1313 |
|
|
<p>IPv6 で使われる "::" という表記はサポートされていない。 "::1" ではなく "0:0:0:0:0:0:0:1" のように表記する必要がある。</p> |
1314 |
kumaneko |
1000 |
|
1315 |
|
|
<p>同じIPアドレスを繰り返し指定する手間を避けるために、パス名と同様にグループ化を行うことができる。</p> |
1316 |
|
|
|
1317 |
|
|
<p>関連項目:<a href="#exception_policy_address_group">address_group</a></p> |
1318 |
|
|
|
1319 |
|
|
<h3><a name="domain_policy_allow_signal">allow_signal</a></h3> |
1320 |
|
|
|
1321 |
kumaneko |
999 |
<p>シグナルのアクセス許可を指定するには、 allow_signal というディレクティブに続けて、シグナルの番号および操作対象ドメインを指定する。<br> |
1322 |
|
|
例外が2つ存在する。シグナル番号が0の場合は常に許可される。また、自分の属するドメインへのシグナルの場合には常に許可される。<br> |
1323 |
|
|
その他の場合、このファイルに指定されたシグナル番号とドメイン名で始まる場合のみそのシグナルを送信できる。<br> |
1324 |
|
|
操作対象ドメインとして <kernel> を指定すると、全てのドメインに指定された番号のシグナルを送信できる。</p> |
1325 |
|
|
|
1326 |
kumaneko |
1000 |
<h3><a name="domain_policy_use_profile">use_profile</a></h3> |
1327 |
kumaneko |
999 |
|
1328 |
kumaneko |
1000 |
<p>これは、このドメインに対して割り当てられているプロファイル番号を示しています。プロファイル番号は 0 〜 255 の値をとります。</p> |
1329 |
kumaneko |
999 |
|
1330 |
kumaneko |
1000 |
<h3><a name="domain_policy_quota_exceeded">quota_exceeded</a></h3> |
1331 |
kumaneko |
999 |
|
1332 |
kumaneko |
1000 |
<p>これは、学習モードで動作中にアクセス許可の数が<a href="#profile_MAX_ACCEPT_ENTRY">MAX_ACCEPT_ENTRY</a>で指定された値に到達したため、このドメインに対してはアクセス許可を学習しきれなかったことを示しています。チューニングを行うなどしてアクセス許可の数を減らすようにしてください。</p> |
1333 |
kumaneko |
999 |
|
1334 |
kumaneko |
1000 |
<h2><a name="exception_policy">/proc/ccs/exception_policy</a></h2> |
1335 |
kumaneko |
999 |
|
1336 |
kumaneko |
1000 |
<h3><a name="exception_policy_file_pattern">file_pattern</a></h3> |
1337 |
kumaneko |
999 |
|
1338 |
|
|
<p>パス名のパターン化を指示するには、 file_pattern というディレクティブに続けて、パス名のパターンを指定する。パス名は正規化されたパス名でなければならない。このディレクティブは実行許可を与える場合とドメイン定義には適用されない。<br> |
1339 |
kumaneko |
1000 |
例えば、プロセスIDを含む正規化されたパス名(/proc/PID/)は、アクセス制御が正しく行われるようにグループ化されなければならない。</p> |
1340 |
kumaneko |
999 |
|
1341 |
kumaneko |
1000 |
<p>学習モード(<a href="#profile_MAC_FOR_FILE">MAC_FOR_FILE</a>が1に設定されている状態)でパス名に対するアクセスを行うと、自動的にパターン化された状態で学習される。学習モード以外には影響しない。この構文は、既知のパターンをテンプレート化することによって、後でチューニングを行うときの手間を軽減するためだけに使われる。</p> |
1342 |
kumaneko |
999 |
|
1343 |
kumaneko |
1000 |
<h3><a name="exception_policy_path_group">path_group</a></h3> |
1344 |
kumaneko |
999 |
|
1345 |
|
|
<p>パス名のグループを定義するには、 path_group というディレクティブに続けて、グループ名とパス名のパターンを指定する。<br> |
1346 |
|
|
例えば、ホームディレクトリ以下の全ファイルをまとめたい場合、</p> |
1347 |
|
|
|
1348 |
|
|
<table border="1"> |
1349 |
|
|
<tr><td> |
1350 |
|
|
path_group HOME-DIR-FILE /home/\*/\*<br> |
1351 |
|
|
path_group HOME-DIR-FILE /home/\*/\*/\*<br> |
1352 |
|
|
path_group HOME-DIR-FILE /home/\*/\*/\*/\*<br> |
1353 |
|
|
path_group HOME-DIR-FILE /home/\*/\*/\*/\*/\*<br> |
1354 |
|
|
path_group HOME-DIR-FILE /home/\*/\*/\*/\*/\*/\*<br> |
1355 |
|
|
path_group HOME-DIR-FILE /home/\*/\*/\*/\*/\*/\*/\* |
1356 |
|
|
</td></tr> |
1357 |
|
|
</table> |
1358 |
|
|
|
1359 |
|
|
<p>のように定義しておくことで、ドメイン別ポリシーのファイルに対するアクセス許可を指定する際に</p> |
1360 |
|
|
|
1361 |
|
|
<table border="1"> |
1362 |
|
|
<tr><td> |
1363 |
|
|
allow_read @HOME-DIR-FILE |
1364 |
|
|
</td></tr> |
1365 |
|
|
</table> |
1366 |
|
|
|
1367 |
|
|
<p>のように指定できる。</p> |
1368 |
|
|
|
1369 |
kumaneko |
1000 |
<h3><a name="exception_policy_address_group">address_group</a></h3> |
1370 |
kumaneko |
999 |
|
1371 |
|
|
<p>アドレスのグループを定義するには、 address_group というディレクティブに続けて、グループ名とIPアドレスのパターンを指定する。<br> |
1372 |
|
|
例えば、ローカルアドレスをまとめたい場合、</p> |
1373 |
|
|
|
1374 |
|
|
<table border="1"> |
1375 |
|
|
<tr><td> |
1376 |
|
|
address_group local-address 10.0.0.0-10.255.255.255<br> |
1377 |
|
|
address_group local-address 172.16.0.0-172.31.255.255<br> |
1378 |
|
|
address_group local-address 192.168.0.0-192.168.255.255 |
1379 |
|
|
</td></tr> |
1380 |
|
|
</table> |
1381 |
|
|
|
1382 |
|
|
<p>のように定義しておくことで、ドメイン別ポリシーのネットワークに対するアクセス許可を指定する際に</p> |
1383 |
|
|
|
1384 |
|
|
<table border="1"> |
1385 |
|
|
<tr><td> |
1386 |
|
|
allow_network TCP accept @local-address 1024-65535 |
1387 |
|
|
</td></tr> |
1388 |
|
|
</table> |
1389 |
|
|
|
1390 |
|
|
<p>のように指定できる。</p> |
1391 |
|
|
|
1392 |
kumaneko |
1000 |
<h3><a name="exception_policy_allow_read">allow_read</a></h3> |
1393 |
kumaneko |
999 |
|
1394 |
kumaneko |
1000 |
<p>無条件に読み込みを許可するファイルを指定するには、 allow_read というディレクティブに続けて、正規化されたファイル名を指定する。このディレクティブの目的は、 GLIBC がプログラム実行時に参照するファイルやエラーメッセージを表示する際に参照するファイルを指定することで、<a href="#domain_policy">ドメイン別ポリシー</a>の記述量を減らすことである。DACで許可されれば全てのプロセスが読み込めるので、くれぐれも /etc/passwd のようなファイルを指定しないこと。</p> |
1395 |
kumaneko |
999 |
|
1396 |
kumaneko |
1000 |
<h3><a name="exception_policy_allow_env">allow_env</a></h3> |
1397 |
kumaneko |
999 |
|
1398 |
|
|
<p>無条件に受け取ってよい環境変数名を指定するには、 allow_env というディレクティブに続けて、環境変数名を指定する。このディレクティブの目的は、 PATH や HOME のように一般的に使われている環境変数を許可するためのメモリ消費を抑えるためである。くれぐれも LD_PRELOAD のような危険な環境変数を指定しないこと。</p> |
1399 |
|
|
|
1400 |
kumaneko |
1000 |
<p>関連項目:<a href="#domain_policy_allow_env">allow_env</a></p> |
1401 |
kumaneko |
999 |
|
1402 |
kumaneko |
1000 |
<h3><a name="exception_policy_deny_rewrite">deny_rewrite</a></h3> |
1403 |
kumaneko |
999 |
|
1404 |
kumaneko |
1000 |
<p>deny_rewrite というキーワードを使用して、既に記録されている部分の書き換えを禁止したいファイル(ログファイル等)のパス名を登録する。パターンが使用できる。 deny_rewrite というキーワードを使用して登録されたファイルは、ドメイン用ポリシーの中で明示的に<a href="#domain_policy_allow_rewrite">allow_rewrite</a>というキーワードを用いて許可が与えられない限り、追記ではない書き込みモードでのオープンとファイルの切り詰めが禁止される。</p> |
1405 |
kumaneko |
999 |
|
1406 |
kumaneko |
1000 |
<p>関連項目:<a href="#domain_policy_allow_rewrite">allow_rewrite</a></p> |
1407 |
|
|
|
1408 |
|
|
<h3><a name="exception_policy_alias">alias</h3> |
1409 |
|
|
|
1410 |
kumaneko |
999 |
<p>シンボリックリンクを解決した名前ではなくシンボリックリンクの名前のまま実行させるプログラムを指定するには、 alias というディレクティブに続けてシンボリックリンクを解決したパス名とシンボリックリンクを解決する前のパス名を指定する。このディレクティブの目的は、実行時の名前によって異なる振る舞いをするプログラムが、ハードリンクではなくシンボリックリンクで参照される場合に、シンボリックリンクの名前でドメインを遷移できるようにすることである。</p> |
1411 |
|
|
<p>例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクであるため、通常は /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。しかし、 alias /sbin/killall5 /sbin/pidof という指定をすることで、 /sbin/pidof を実行すると /sbin/pidof が実行されたものとしてドメインが定義されるようにできる。</p> |
1412 |
|
|
|
1413 |
kumaneko |
1000 |
<p>関連項目:<a href="#domain_policy_allow_execute">allow_execute</a></p> |
1414 |
kumaneko |
999 |
|
1415 |
kumaneko |
1000 |
<h3><a name="exception_policy_aggregator">aggregator</h3> |
1416 |
|
|
|
1417 |
kumaneko |
999 |
<p>複数のプログラムを単一のプログラム名で扱うには、 aggregator というディレクティブに続けて集約前のプログラム名と集約後のプログラム名を指定する。このディレクティブの目的は、同様のプログラムを集約することである。</p> |
1418 |
|
|
<p>例えば、 /usr/bin/tac と /bin/cat は似ているので、 aggregator /usr/bin/tac /bin/cat という指定をすることで /usr/bin/tac を /bin/cat のドメインで実行することができるようになる。</p> |
1419 |
|
|
<p>例えば、Fedora Core 3 の /usr/sbin/logrotate は /tmp/logrotate.\?\?\?\?\?\? というパターンのプログラムを作成して実行するが、 TOMOYO Linux では安全上の理由からプログラムの実行許可を与える場合とドメインを定義する場合にパターンを使用することを認めていない。しかし、 aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp という指定をすることで /tmp/logrotate.\?\?\?\?\?\? を /tmp/logrotate.tmp のドメインで実行することができるようになる。</p> |
1420 |
|
|
|
1421 |
kumaneko |
1000 |
<p>関連項目:<a href="#domain_policy_allow_execute">allow_execute</a></p> |
1422 |
kumaneko |
999 |
|
1423 |
kumaneko |
1000 |
<h3><a name="exception_policy_initialize_domain">initialize_domain</a></h3> |
1424 |
|
|
|
1425 |
kumaneko |
999 |
<p>特定のプログラムが実行された場合にドメイン遷移を初期化させるには、 initialize_domain というディレクティブを使用する。</p> |
1426 |
|
|
|
1427 |
|
|
<ul> |
1428 |
|
|
<li>initialize_domain プログラム名 from ドメイン名 |
1429 |
|
|
<li>initialize_domain プログラム名 from ドメイン名の最後のプログラム名 |
1430 |
|
|
<li>initialize_domain プログラム名 |
1431 |
|
|
</ul> |
1432 |
|
|
|
1433 |
|
|
<p> from 以降が指定されていない場合は任意のドメインから実行された場合に適用される。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。</p> |
1434 |
|
|
|
1435 |
|
|
<p>このディレクティブの目的は、常駐型プログラムや必要に応じてカーネルから起動されるプログラムを、通常とは異なるドメインに遷移させることで、ドメイン遷移を集約することである。</p> |
1436 |
|
|
|
1437 |
kumaneko |
1000 |
<p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_no_initialize_domain">no_initialize_domain</a></p> |
1438 |
kumaneko |
999 |
|
1439 |
kumaneko |
1000 |
<h3><a name="exception_policy_no_initialize_domain">no_initialize_domain</a></h3> |
1440 |
|
|
|
1441 |
kumaneko |
999 |
<p>initialize_domain の効力を打ち消すには、 no_initialize_domain というディレクティブを指定する。</p> |
1442 |
|
|
<ul> |
1443 |
|
|
<li>no_initialize_domain プログラム名 from ドメイン名 |
1444 |
|
|
<li>no_initialize_domain プログラム名 from ドメイン名の最後のプログラム名 |
1445 |
|
|
<li>no_initialize_domain プログラム名 |
1446 |
|
|
</ul> |
1447 |
|
|
|
1448 |
|
|
<p>このディレクティブはドメイン遷移を初期化させたくない場合に使用する。</p> |
1449 |
|
|
|
1450 |
kumaneko |
1000 |
<p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_initialize_domain">initialize_domain</a></p> |
1451 |
kumaneko |
999 |
|
1452 |
kumaneko |
1000 |
<h3><a name="exception_policy_keep_domain">keep_domain</a></h3> |
1453 |
|
|
|
1454 |
kumaneko |
999 |
<p>特定のドメインからプログラムが実行されてもドメイン遷移を行わないようにするには、 keep_domain というディレクティブを使用する。</p> |
1455 |
|
|
|
1456 |
|
|
<ul> |
1457 |
|
|
<li>keep_domain プログラム名 from ドメイン名 |
1458 |
|
|
<li>keep_domain プログラム名 from ドメイン名の最後のプログラム名 |
1459 |
|
|
<li>keep_domain ドメイン名 |
1460 |
|
|
<li>keep_domain ドメイン名の最後のプログラム名 |
1461 |
|
|
</ul> |
1462 |
|
|
|
1463 |
|
|
<p> from 以前が指定されていない場合は任意のプログラムが実行された場合に適用される。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。</p> |
1464 |
|
|
|
1465 |
|
|
<p>このディレクティブの目的は、不要なドメイン遷移の発生を抑制することでドメイン数とメモリ消費を抑えることである。</p> |
1466 |
|
|
|
1467 |
kumaneko |
1000 |
<p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_no_keep_domain">no_keep_domain</a></p> |
1468 |
kumaneko |
999 |
|
1469 |
kumaneko |
1000 |
<h3><a name="exception_policy_no_keep_domain">no_keep_domain</a></h3> |
1470 |
|
|
|
1471 |
kumaneko |
999 |
<p>keep_domain の効力を打ち消すには、 no_keep_domain というディレクティブを指定する。</p> |
1472 |
|
|
|
1473 |
|
|
<ul> |
1474 |
|
|
<li>no_keep_domain プログラム名 from ドメイン名 |
1475 |
|
|
<li>no_keep_domain プログラム名 from ドメイン名の最後のプログラム名 |
1476 |
|
|
<li>no_keep_domain ドメイン名 |
1477 |
|
|
<li>no_keep_domain ドメイン名の最後のプログラム名 |
1478 |
|
|
</ul> |
1479 |
|
|
|
1480 |
|
|
<p>このディレクティブはドメイン遷移を行わせたい場合に使用する。</p> |
1481 |
|
|
|
1482 |
kumaneko |
1000 |
<p>関連項目:<a href="#">ドメイン遷移</a> <a href="#exception_policy_keep_domain">keep_domain</a></p> |
1483 |
|
|
|
1484 |
kumaneko |
999 |
<hr> |
1485 |
kumaneko |
1000 |
|
1486 |
|
|
<h3><a name="profile">/proc/ccs/profile</a></h3> |
1487 |
|
|
|
1488 |
|
|
<p>現在の制御レベルを取得または変更する。変更するためのツールとして setlevel と loadpolicy が用意されている。</p> |
1489 |
kumaneko |
999 |
<p>(例)<br> |
1490 |
|
|
cat /proc/ccs/profile<br> |
1491 |
kumaneko |
1000 |
savepolicy -p<br> |
1492 |
|
|
setlevel 1-MAC_FOR_FILE=1<br> |
1493 |
|
|
echo 1-MAC_FOR_FILE=1 | loadpolicy -p</p> |
1494 |
|
|
|
1495 |
|
|
<p>関連項目:<a href="#policy_file_modifiers">変更について</a></p> |
1496 |
|
|
|
1497 |
|
|
<h3><a name="system_policy">/proc/ccs/system_policy</a></h3> |
1498 |
|
|
|
1499 |
|
|
<p>現在の<a href="#system_policy">システムポリシー</a>を読み出しまたは追加または削除する。</p> |
1500 |
kumaneko |
999 |
<p>(例)<br> |
1501 |
kumaneko |
1000 |
cat /proc/ccs/system_policy<br> |
1502 |
|
|
savepolicy -s<br> |
1503 |
|
|
echo 'allow_mount /proc /proc/ proc' | loadpolicy -s<br> |
1504 |
|
|
echo 'delete allow_mount /proc /proc/ proc' | loadpolicy -s</p> |
1505 |
|
|
|
1506 |
|
|
<p>関連項目:<a href="#policy_file_modifiers">変更について</a></p> |
1507 |
|
|
|
1508 |
|
|
<h3><a name="domain_policy">/proc/ccs/domain_policy</a></h3> |
1509 |
|
|
|
1510 |
|
|
<p>現在の<a href="#domain_policy">ドメインポリシー</a>を読み出しまたは追加または削除する。</p> |
1511 |
kumaneko |
999 |
<p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成される)<br> |
1512 |
kumaneko |
1000 |
printf "<kernel> /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d</p> |
1513 |
kumaneko |
999 |
<p>(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成されない)<br> |
1514 |
kumaneko |
1000 |
printf "select <kernel> /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d</p> |
1515 |
kumaneko |
999 |
<p>(例)ドメインを選択してアクセス許可を削除<br> |
1516 |
kumaneko |
1000 |
printf "select <kernel> /sbin/init\ndelete allow_read /etc/passwd\ndelete allow_read /etc/shadow\n" | loadpolicy -d</p> |
1517 |
kumaneko |
999 |
<p>(例)特定のドメインを削除<br> |
1518 |
kumaneko |
1000 |
printf "delete <kernel> /sbin/init\n" | loadpolicy -d</p> |
1519 |
kumaneko |
999 |
<p>(例)ドメイン別ポリシーの読み出し<br> |
1520 |
|
|
cat /proc/ccs/domain_policy</p> |
1521 |
kumaneko |
1000 |
|
1522 |
|
|
<h3><a name="exception_policy">/proc/ccs/exception_policy</a></h3> |
1523 |
|
|
|
1524 |
|
|
<p>現在の<a href="#exception_policy">例外ポリシー</a>を読み出しまたは追加または削除する。</p> |
1525 |
kumaneko |
999 |
<p>(例)<br> |
1526 |
kumaneko |
1000 |
echo 'file_pattern /proc/\$/status' | loadpolicy -e<br> |
1527 |
|
|
echo 'delete file_pattern /proc/\$/status' | loadpolicy -e<br> |
1528 |
kumaneko |
999 |
cat /proc/ccs/exception_policy</p> |
1529 |
kumaneko |
1000 |
|
1530 |
|
|
<h3><a name="query">/proc/ccs/query</a></h3> |
1531 |
|
|
|
1532 |
kumaneko |
999 |
<p>強制モードで動作中にポリシー違反が発生した場合に、そのアクセス要求を個別に許可するかどうかの指定を行うために使用する。 ALLOW_ENFORCE_GRACE=1 に設定されているプロファイルが割り当てられているドメインに対して強制モードでポリシー違反が発生した場合、 ccs-queryd を用いて対話的に諾否を指定できる。</p> |
1533 |
kumaneko |
1000 |
|
1534 |
|
|
<h3><a name="manager">/proc/ccs/manager</a></h3> |
1535 |
|
|
|
1536 |
kumaneko |
999 |
<p>ポリシーの読み書きを行えるプログラムまたはドメインの一覧を取得または追加する。</p> |
1537 |
kumaneko |
1000 |
|
1538 |
|
|
<h3><a name=".domain_status">/proc/ccs/.domain_status</a></h3> |
1539 |
|
|
|
1540 |
kumaneko |
999 |
<p>setprofile コマンドが行単位での処理を行いやすくするために domain_policy の内容からプロファイル番号とドメイン名の部分だけを抽出したもの。DBMSのビューに相当する機能を提供する。</p> |
1541 |
kumaneko |
1000 |
|
1542 |
|
|
<h3><a name="meminfo">/proc/ccs/meminfo</a></h3> |
1543 |
|
|
|
1544 |
kumaneko |
999 |
<p>TOMOYO Linuxがポリシーを保持するために使用しているカーネルのメモリ情報を取得する。</p> |
1545 |
|
|
<p>(例)<br> |
1546 |
|
|
cat /proc/ccs/meminfo<br></p> |
1547 |
kumaneko |
1000 |
|
1548 |
|
|
<h3><a name="grant_log">/proc/ccs/grant_log</a></h3> |
1549 |
|
|
|
1550 |
kumaneko |
999 |
<p>ドメイン別ポリシーに対するアクセス許可ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_GRANT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。</p> |
1551 |
|
|
<p>(例)<br> |
1552 |
|
|
cat /proc/ccs/grant_log</p> |
1553 |
kumaneko |
1000 |
|
1554 |
|
|
<h3><a name="reject_log">/proc/ccs/reject_log</a></h3> |
1555 |
|
|
|
1556 |
kumaneko |
999 |
<p>ドメイン別ポリシーに対するアクセス拒否ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_REJECT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。</p> |
1557 |
|
|
<p>(例)<br> |
1558 |
|
|
cat /proc/ccs/reject_log</p> |
1559 |
kumaneko |
1000 |
|
1560 |
|
|
<h3><a name="self_domain">/proc/ccs/self_domain</a></h3> |
1561 |
|
|
|
1562 |
kumaneko |
999 |
<p>呼び出し元プロセスが属しているドメインの名前を取得する。</p> |
1563 |
|
|
<p>(例)<br> |
1564 |
|
|
cat /proc/ccs/self_domain</p> |
1565 |
kumaneko |
1000 |
|
1566 |
|
|
<h3><a name=".process_status">/proc/ccs/.process_status</a></h3> |
1567 |
|
|
|
1568 |
kumaneko |
999 |
<p>ccstree コマンド(「現在動作中のプロセス」と「そのプロセスが属しているドメイン」と「そのドメインに割り当てられているプロファイル番号」を pstree のように一覧表示する)のためのインタフェース。例外的にポリシーマネージャとして登録されていないプログラムでも書き込みを行える。</p> |
1569 |
kumaneko |
1000 |
|
1570 |
|
|
<h3><a name=".updates_counter">/proc/ccs/.updates_counter</a></h3> |
1571 |
|
|
|
1572 |
kumaneko |
999 |
<p>ポリシーの変更を検出するためのカウンタ。参照されるたびに 0 にリセットされる。ポリシーの更新を監視するプログラムのためのインタフェース。</p> |
1573 |
kumaneko |
1000 |
|
1574 |
|
|
<h3><a name="version">/proc/ccs/version</a></h3> |
1575 |
|
|
|
1576 |
|
|
<p>TOMOYO Linux のバージョン番号を取得するためのインタフェース。</p> |
1577 |
|
|
<p>(例)<br> |
1578 |
|
|
cat /proc/ccs/version</p> |
1579 |
|
|
|
1580 |
|
|
<h2><a name="features_for_intermediate">中級者向けの機能</a></h2> |
1581 |
|
|
|
1582 |
|
|
<h3><a name="sleep_penalty">ポリシー違反時のペナルティ指定</a></h3> |
1583 |
|
|
|
1584 |
|
|
<p>強制モードでポリシー違反が発生した場合に、ポリシー違反の原因となったプロセスを一定時間スリープ状態にさせることができます。</p> |
1585 |
|
|
|
1586 |
|
|
<table border="1"> |
1587 |
|
|
<tr><td>/proc/ccs/profile での指定例</td><td>意味</td></tr> |
1588 |
|
|
<tr><td>3-SLEEP_PERIOD=1</td><td>プロファイル 3 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、0.1秒間スリープさせる。</td></tr> |
1589 |
|
|
<tr><td>4-SLEEP_PERIOD=10</td><td>プロファイル 4 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、1秒間スリープさせる。</td></tr> |
1590 |
|
|
</table> |
1591 |
|
|
|
1592 |
|
|
<p>この機能は、無限ループの中でポリシー違反が発生した場合に、CPU使用率が100%になってしまうのを回避するための安全装置です。通常は0.1秒間スリープさせるだけで充分です。</p> |
1593 |
|
|
|
1594 |
|
|
<p>この機能は、許可されていないホストからの TCP 接続要求や UDP パケットを攻撃者が故意に送りつけることでポリシー違反を発生させることでサービスを長時間スリープ状態にさせることにより、許可されているホストからの TCP 接続要求や UDP パケットの処理を大幅に遅延させるという攻撃が成立してしまうのを回避するために、ネットワークの受信系の操作に対しては機能しないようになっています。</p> |
1595 |
|
|
|
1596 |
|
|
<h3><a name="conditional_acl">条件付きアクセス許可の指定</a></h3> |
1597 |
|
|
|
1598 |
|
|
<p>アクセス許可にユーザID等に基づいた条件を付加することができます。条件は個々のアクセス許可の末尾に " if " 句を追加する形で指定します。</p> |
1599 |
|
|
|
1600 |
|
|
<table border="1"> |
1601 |
|
|
<tr><td>指定例</td><td>意味</td></tr> |
1602 |
|
|
<tr><td>allow_read /etc/passwd</td><td>/etc/passwd の参照を許可</td></tr> |
1603 |
|
|
<tr><td>allow_read /etc/passwd if task.uid=0</td><td>プロセスのユーザIDが0の場合に限り、/etc/passwd の参照を許可</td></tr> |
1604 |
|
|
<tr><td>allow_read /etc/passwd if task.uid!=0</td><td>プロセスのユーザIDが0ではない場合に限り、/etc/passwd の参照を許可</td></tr> |
1605 |
|
|
<tr><td>allow_network TCP connect 10.0.0.1</td><td>TCP プロトコルで 10.0.0.1 への接続を許可</td></tr> |
1606 |
|
|
<tr><td>allow_network TCP connect 10.0.0.1 if task.uid=100</td><td>プロセスのユーザIDが100の場合に限り、TCP プロトコルで 10.0.0.1 への接続を許可</td></tr> |
1607 |
|
|
<tr><td>allow_capability SYS_KILL</td><td>kill(2) の使用を許可</td></tr> |
1608 |
|
|
<tr><td>allow_capability SYS_KILL if task.ppid=1 task.uid=0 task.euid=0</td><td>プロセスが /sbin/init の子であり、かつ、プロセスのユーザIDと実効ユーザIDが0の場合に限り、kill(2) の使用を許可</td></tr> |
1609 |
|
|
</table> |
1610 |
|
|
|
1611 |
|
|
<p>以下の変数を指定できます。</p> |
1612 |
|
|
|
1613 |
|
|
<table border="1"> |
1614 |
|
|
<tr><td>変数</td><td>意味</td></tr> |
1615 |
|
|
<tr><td>task.uid</td><td>呼び出したプロセスのユーザID</td></tr> |
1616 |
|
|
<tr><td>task.euid</td><td>呼び出したプロセスの実効ユーザID</td></tr> |
1617 |
|
|
<tr><td>task.suid</td><td>呼び出したプロセスの保存ユーザID</td></tr> |
1618 |
|
|
<tr><td>task.fsuid</td><td>呼び出したプロセスのファイルシステムユーザID</td></tr> |
1619 |
|
|
<tr><td>task.gid</td><td>呼び出したプロセスのグループID</td></tr> |
1620 |
|
|
<tr><td>task.egid</td><td>呼び出したプロセスの実効グループID</td></tr> |
1621 |
|
|
<tr><td>task.sgid</td><td>呼び出したプロセスの保存グループID</td></tr> |
1622 |
|
|
<tr><td>task.fsgid</td><td>呼び出したプロセスのファイルシステムグループID</td></tr> |
1623 |
|
|
<tr><td>task.pid</td><td>呼び出したプロセスのプロセスID</td></tr> |
1624 |
|
|
<tr><td>task.ppid</td><td>呼び出したプロセスの親プロセスのプロセスID</td></tr> |
1625 |
|
|
<tr><td>path1.uid</td><td>許可されるパス名の所有者ID</td></tr> |
1626 |
|
|
<tr><td>path1.gid</td><td>許可されるパス名のグループID</td></tr> |
1627 |
|
|
<tr><td>path1.ino</td><td>許可されるパス名のiノード番号</td></tr> |
1628 |
|
|
<tr><td>path1.parent.uid</td><td>許可されるパス名の親ディレクトリの所有者ID</td></tr> |
1629 |
|
|
<tr><td>path1.parent.gid</td><td>許可されるパス名の親ディレクトリのグループID</td></tr> |
1630 |
|
|
<tr><td>path1.parent.ino</td><td>許可されるパス名の親ディレクトリのiノード番号</td></tr> |
1631 |
|
|
<tr><td>path2.parent.uid</td><td>作成されるパス名の親ディレクトリの所有者ID</td></tr> |
1632 |
|
|
<tr><td>path2.parent.gid</td><td>作成されるパス名の親ディレクトリのグループID</td></tr> |
1633 |
|
|
<tr><td>path2.parent.ino</td><td>作成されるパス名の親ディレクトリのiノード番号</td></tr> |
1634 |
|
|
<tr><td>exec.argc</td><td>プログラム実行時の引数の数</td></tr> |
1635 |
|
|
<tr><td>exec.envc</td><td>プログラム実行時の環境変数の数</td></tr> |
1636 |
|
|
<tr><td>exec.argv[index]="value"</td><td>index ( 0 <= index < exec.argc)番目の引数の値が value である</td></tr> |
1637 |
|
|
<tr><td>exec.argv[index]!="value"</td><td>index ( 0 <= index < exec.argc)番目の引数の値が value ではない</td></tr> |
1638 |
|
|
<tr><td>exec.envp["name"]="value"</td><td>環境変数 name が定義されており、値が value である</td></tr> |
1639 |
|
|
<tr><td>exec.envp["name"]!="value"</td><td>環境変数 name が定義されていないか、あるいは値が value ではない</td></tr> |
1640 |
|
|
<tr><td>exec.envp["name"]!=null</td><td>環境変数 name が定義されている</td></tr> |
1641 |
|
|
<tr><td>exec.envp["name"]=null</td><td>環境変数 name が定義されていない</td></tr> |
1642 |
|
|
</table> |
1643 |
|
|
|
1644 |
|
|
<p>path1 はパス名を必要とする操作の1個目のパス名に対応し、 path2 はパス名を必要とする操作の2個目のパス名に対応します。 |
1645 |
|
|
例えば、「allow_rename ファイル1 ファイル2」というアクセス許可の場合、 path1 がファイル1に、 path2 がファイル2に対応します。</p> |
1646 |
|
|
|
1647 |
|
|
<p>path1.uid および path1.gid は存在しないパス名に対しては指定できない。つまり、ファイル等の作成時(allow_create 等)には使用できません。</p> |
1648 |
|
|
|
1649 |
|
|
<p>path1.parent.uid および path1.parent.gid は常に指定可能です。</p> |
1650 |
|
|
|
1651 |
|
|
<p>path2.parent.uid および path2.parent.gid はパス名を2つ必要とする操作(つまり allow_link および allow_rename )に限り指定できます。</p> |
1652 |
|
|
|
1653 |
|
|
<p>path2.uid および path2.gid はサポートしていません。( rename 操作に於いて、 path2 が存在する場合には暗黙のうちに unlink または rmdir が実行されます。)</p> |
1654 |
|
|
|
1655 |
|
|
<p>sysctl による読み書き( /proc/sys/ ディレクトリ以下のファイルを open ではなく sysctl を用いてアクセス)を行う場合については、 path1 path2 ともにサポートしていません。</p> |
1656 |
|
|
|
1657 |
|
|
<p>exec はプログラム実行時(つまり<a href="#domain_policy_allow_execute">allow_execute</a>)に限り指定できます。</p> |
1658 |
|
|
|
1659 |
|
|
<h2><a name="features_for_advanced">上級者向けの機能</a></h2> |
1660 |
|
|
|
1661 |
|
|
<h3><a name="stateful_acl">ステートフルなアクセス許可の指定</a></h3> |
1662 |
|
|
|
1663 |
|
|
<p>TOMOYO Linux はユーザランドアプリケーションの修正を行わないため、プログラムの実行を伴わずにアクセス可能な資源の範囲を変更することはできません。しかし、例えば接続元クライアントのIPアドレスによってアクセスの可否を切り替えたいという場合があります。そのような場合に対応するため、プロセス毎に状態変数を割り当てることができ、条件付きアクセス許可の指定で使えるようになっています。</p> |
1664 |
|
|
|
1665 |
|
|
<table border="1"> |
1666 |
|
|
<tr><td>変数</td><td>意味</td></tr> |
1667 |
|
|
<tr><td>task.state[0]</td><td>呼び出したプロセスの状態変数0</td></tr> |
1668 |
|
|
<tr><td>task.state[1]</td><td>呼び出したプロセスの状態変数1</td></tr> |
1669 |
|
|
<tr><td>task.state[2]</td><td>呼び出したプロセスの状態変数2</td></tr> |
1670 |
|
|
</table> |
1671 |
|
|
|
1672 |
|
|
<p>task.state[0] 〜 task.state[2] は 0 〜 255 までの値を指定できます。この値を設定するには、以下のようにアクセス許可の指定に続けて " ; set " という句を指定します。</p> |
1673 |
|
|
|
1674 |
|
|
<table border="1"> |
1675 |
|
|
<tr><td>使用例</td><td>意味</td></tr> |
1676 |
|
|
<tr><td>allow_network TCP accept @TRUSTED_HOSTS 1024-65535 ; set task.state[0]=1</td><td>クライアントが @TRUSTED_HOSTS である場合には、 state[0] に 1 を設定する。</td></tr> |
1677 |
|
|
<tr><td>allow_network TCP accept @UNTRUSTED_HOSTS 1024-65535 ; set task.state[0]=0</td><td>クライアントが @UNTRUSTED_HOSTS である場合には、 state[0] に 0 を設定する。</td></tr> |
1678 |
|
|
<tr><td>allow_execute /bin/bash if task.state[0]=1</td><td>state[0] が 1 の場合は、 /bin/bash の実行を許可する。</td></tr> |
1679 |
|
|
<tr><td>allow_execute /sbin/nologin if task.state[0]=0</td><td>state[0] が 0 の場合は、 /sbin/nologin の実行を許可する。</td></tr> |
1680 |
|
|
<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> |
1681 |
|
|
</table> |
1682 |
|
|
|
1683 |
|
|
<p>状態変数を使用する際には、以下の点に注意してください。</p> |
1684 |
|
|
|
1685 |
|
|
<ul> |
1686 |
|
|
<li>プロセスのドメインはプログラムの実行によって自動的に変更されるのに対して、プロセスの状態変数は明示的に" ; set " という句で指定されない限り変更されない。そのため、状態変数の戻し忘れに注意。</li> |
1687 |
|
|
<li>状態変数の設定はポリシーのチェックにより許可された時点で行われる。そのため、メモリ不足などポリシーのチェック以降のエラーによって、状態変数が変更されたけれどもアクセス要求は処理されなかったという状況が発生しうる。</li> |
1688 |
|
|
<li>上記の @TRUSTED_HOSTS と @UNTRUSTED_HOSTS の両方に含まれていた場合、先に一致したほうの状態変数が使われてしまう。そのため、順番に依存するアクセス許可を定義しないように注意。</li> |
1689 |
|
|
</ul> |
1690 |
|
|
|
1691 |
|
|
<h3><a name="alt_exec_penalty">許可されていないプログラムの実行が要求された場合の代替処理指定</a></h3> |
1692 |
|
|
|
1693 |
|
|
<p>TOMOYO Linux では、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、不要なプログラムの実行を拒否するという振る舞いだけでなく、それ以外の振る舞いを行うこともできます。</p> |
1694 |
|
|
|
1695 |
|
|
<p>強制モードに於いて allow_execute 構文により許可されていないプログラムの実行が要求された場合、デフォルトではプログラムの実行を拒否します。しかし、あるプログラムからどのプログラムの実行を許可する必要があるかを把握済みであるという前提があれば、プロセスが正常な動作をしている限りに於いて許可されていないプログラムの実行が要求されることは無いので、許可されていないプログラムの実行が要求されたということはプロセスが正常な動作をしていない(つまり、プロセスにとっては制御を失った状態である)とみなすことができます。</p> |
1696 |
|
|
|
1697 |
|
|
<p>攻撃者はバッファオーバーフローなどのセキュリティホールを攻撃することでプロセスの制御を奪い、シェルなどのコマンドの実行を要求してきます。もし、そのプロセスからシェルの実行を許可する必要が無い(すなわち allow_execute /bin/bash のようなアクセス許可を与える必要が無い)のであれば、シェルの実行が要求された時点で既にプロセスにとっては制御を失っていると考えることができます。</p> |
1698 |
|
|
|
1699 |
|
|
<p>通常、許可されていないプログラムの実行が要求された場合は、その要求を拒否するだけです。しかし、制御を失っているプロセスから要求されたプログラムの実行要求を拒否したところで、そのプロセスの制御が取り戻される(つまり、正常な動作をするようになる)とは考えられません。しかし、プログラムを実行するということは、現在動作中のプロセスを新しいプログラムに置き換えることで、制御を新しいプログラムに譲渡することを意味します。つまり、あるプロセスがバッファオーバーフローなどにより制御を失っていたとしても、プログラムを実行することにより、そのプロセスの制御が取り戻されるわけです。</p> |
1700 |
|
|
|
1701 |
|
|
<p>攻撃者の手によって制御を失ったプロセスからプログラムが実行された後の制御は、どのプログラムが実行されたかによって決まります。シェルが実行された場合には、シェルはユーザが要求したとおりに処理を実行してしまうため、プログラムの実行を要求したプロセスの所有者である攻撃者の手に委ねられてしまうわけです。しかし、何もせずに終了するようなプログラム(例えば /bin/true )が実行された場合には、プロセスの制御が攻撃者の手に委ねられてしまうことはありません。</p> |
1702 |
|
|
|
1703 |
|
|
<p>このように、攻撃者の手によって本来許可する必要の無いプログラムの実行が要求されるという出来事は、見方を変えると、攻撃者自身が制御を取り戻すためのチャンスを与えてくれていると考えることができます。そこで、 TOMOYO Linux では、許可されていないプログラムの実行が要求された場合、その要求を拒否する代わりに他のプログラムを実行するための機構を提供しています。この機構を用いて何をするかはシステム管理者の自由です。</p> |
1704 |
|
|
|
1705 |
|
|
<p>例えば、シェルの実行要求を /bin/true の実行要求に差し替えてしまうことで、そのプロセスを直ちに強制終了させることができます。</p> |
1706 |
|
|
|
1707 |
|
|
<p>例えば、シェルの実行要求をハニーポットクライアントプログラムの実行要求に差し替えてしまうことで、攻撃者がどのようなリクエストを行うかを観察することができます。</p> |
1708 |
|
|
|
1709 |
|
|
<p>例えば、そのログインセッションを強制終了させることができます。</p> |
1710 |
|
|
|
1711 |
|
|
<p>例えば、要求されたコマンドがどのパッケージに含まれているかを教えてくれる Ubuntu の command-not-found パッケージのように、「You are not permitted to execute this program.」のような警告を表示することができます。</p> |
1712 |
|
|
|
1713 |
|
|
<p>例えば、攻撃者の接続元IPアドレスを割り出して、ファイアウォールの設定を変更することができます。</p> |
1714 |
|
|
|
1715 |
|
|
<p>この機能の有効/無効を切り替えるには、以下のように指定します。</p> |
1716 |
|
|
|
1717 |
|
|
<table border="1"> |
1718 |
|
|
<tr><td>/proc/ccs/profile での指定例</td><td>意味</td></tr> |
1719 |
|
|
<tr><td>3-MAC_FOR_FILE=3<br>3-ALT_EXEC=/bin/true</td><td>プロファイル 3 が割り当てられているプロセスが許可されていないプログラムの実行を要求した場合、代わりに /bin/true を実行する。</td></tr> |
1720 |
|
|
<tr><td>4-MAC_FOR_FILE=3<br>4-ALT_EXEC=</td><td>プロファイル 4 が割り当てられているプロセスが許可されていないプログラムの実行を要求した場合、プログラムの実行要求を拒否する。</td></tr> |
1721 |
|
|
</table> |
1722 |
|
|
|
1723 |
|
|
<p>ALT_EXECで指定されたプログラムは、以下のパラメータを受け取ります。</p> |
1724 |
|
|
|
1725 |
|
|
<ul> |
1726 |
|
|
<li>argv[0] には、ALT_EXECで指定されたプログラムのパス名が入っています。</li> |
1727 |
|
|
<li>argv[1] には、許可されていないプログラムの実行を要求したプロセスのドメイン名が入っています。</li> |
1728 |
kumaneko |
1005 |
<li>argv[2] には、許可されていないプログラムの実行を要求したプロセスのパス名が入っています。</li> |
1729 |
|
|
<li>argv[3] には、許可されていないプログラムの実行を要求したプロセスの情報が入っています。</li> |
1730 |
|
|
<li>argv[4] には、許可されなかったプログラムのパス名が入っています。</li> |
1731 |
|
|
<li>argv[5] には、プログラム実行時の引数の数が入っています。</li> |
1732 |
|
|
<li>argv[6] には、プログラム実行時の環境変数の数が入っています。</li> |
1733 |
|
|
<li>argv[7] から argv[6 + argc] には、呼び出し元プロセスが渡した argv[] の内容が入っています。</li> |
1734 |
|
|
<li>argv[7 + argc] から argv [6 + argc + envc] には、呼び出し元プロセスが渡した envp[] の内容が入っています。</li> |
1735 |
|
|
<li>環境変数 envp[] は全てクリアされます。</li> |
1736 |
kumaneko |
1000 |
<li>標準入出力などは呼び出し元プロセスのものを引き継ぎます。</li> |
1737 |
|
|
</ul> |
1738 |
|
|
|
1739 |
|
|
<p>パラメータを表示するサンプルプログラムは以下のようになります。</p> |
1740 |
|
|
|
1741 |
|
|
<table border="1"> |
1742 |
kumaneko |
1005 |
<tr><td><pre> |
1743 |
|
|
#! /bin/sh |
1744 |
|
|
# Don't invoke this program from the command line. |
1745 |
|
|
# This program is invoked by the kernel, with all environment variables cleared. |
1746 |
|
|
# You might need to set environment variable PATH to run this program. |
1747 |
|
|
# |
1748 |
|
|
[ $# -ge 6 ] || exit 1 |
1749 |
|
|
|
1750 |
|
|
echo "----- Domain information -----" |
1751 |
|
|
echo $1 |
1752 |
|
|
shift |
1753 |
|
|
|
1754 |
|
|
echo "----- Program information -----" |
1755 |
|
|
echo $1 |
1756 |
|
|
shift |
1757 |
|
|
|
1758 |
|
|
echo "----- Process information -----" |
1759 |
|
|
echo $1 |
1760 |
|
|
shift |
1761 |
|
|
|
1762 |
|
|
echo "----- Rejected Program information -----" |
1763 |
|
|
echo $1 |
1764 |
|
|
shift |
1765 |
|
|
|
1766 |
|
|
ARGC=$1 |
1767 |
|
|
shift |
1768 |
|
|
echo "----- Number of commandline arguments -----" |
1769 |
|
|
echo $ARGC |
1770 |
|
|
|
1771 |
|
|
ENVC=$1 |
1772 |
|
|
shift |
1773 |
|
|
echo "----- Number of environment variables -----" |
1774 |
|
|
echo $ENVC |
1775 |
|
|
|
1776 |
|
|
echo "----- argv[] information -----" |
1777 |
|
|
|
1778 |
|
|
while [ $ARGC -gt 0 ] |
1779 |
|
|
do |
1780 |
|
|
echo $1 |
1781 |
|
|
shift |
1782 |
|
|
ARGC=`expr $ARGC - 1` |
1783 |
|
|
done |
1784 |
|
|
|
1785 |
|
|
echo "----- envp[] information -----" |
1786 |
|
|
|
1787 |
|
|
while [ $ENVC -gt 0 ] |
1788 |
|
|
do |
1789 |
|
|
echo $1 |
1790 |
|
|
shift |
1791 |
|
|
ENVC=`expr $ENVC - 1` |
1792 |
|
|
done |
1793 |
|
|
|
1794 |
kumaneko |
1000 |
exit 1 |
1795 |
kumaneko |
1005 |
</pre></td></tr> |
1796 |
kumaneko |
1000 |
</table> |
1797 |
|
|
|
1798 |
|
|
<p>この機能を使用する際には、以下の点に注意してください。</p> |
1799 |
|
|
|
1800 |
|
|
<ul> |
1801 |
|
|
<li>ALT_EXECで指定されたプログラムに対して実行許可(<a href="#domain_policy_allow_execute">allow_execute</a>)を与える必要はありませんし、与えるべきではありません。</li> |
1802 |
|
|
<li>プロセスがchroot内部の環境で動作している場合、ALT_EXECで指定されたプログラムが見つからないために実行されない場合があります。これは、プロセスがchroot内部の環境で動作している場合に、chroot外部の環境にあるプログラムを実行できてしまうと危険なので、ALT_EXECで指定されたプログラムは、プロセスの名前空間のルートディレクトリではなく、プロセスのルートディレクトリから検索するようになっているためです。</li> |
1803 |
|
|
<li>ALT_EXECで指定されたプログラムが動作するためのドメインが存在しない場合、実行されません。そのため、例えば<kernel>直下にALT_EXECで指定されたプログラム用のドメインを作成して、そのプログラムを<a href="#exception_policy_initialize_domain">initialize_domain</a>キーワードで指定するなどの準備をしてください。</li> |
1804 |
kumaneko |
1005 |
<li>ALT_EXECで指定されたプログラムは環境変数の影響を受けるのを避けるため、全ての環境変数の内容をクリアした状態で起動されます。そのため、環境変数 PATH 等が設定されていないので、外部コマンドを呼び出す場合には注意してください。また、ALT_EXECで指定されたプログラムが動作するドメインにも強制モード用のプロファイルを割り当てておくことを推奨します。</li> |
1805 |
kumaneko |
1000 |
</ul> |
1806 |
|
|
|
1807 |
|
|
<p>この機能は、機構を提供しているだけです。この機構を活用できるかどうかはあなた次第です。</p> |
1808 |
|
|
|
1809 |
kumaneko |
999 |
<hr> |
1810 |
|
|
<p><a href="index.html#manual">目次へ戻る</a></p> |
1811 |
|
|
<hr> |
1812 |
|
|
</body> |
1813 |
|
|
</html> |