OSDN Git Service

acl: Generate draft and release pages from po4a.
[linuxjm/jm.git] / manual / acl / release / man5 / acl.5
1 .\" Access Control Lists manual pages
2 .\"
3 .\" (C) 2002 Andreas Gruenbacher, <a.gruenbacher@bestbits.at>
4 .\"
5 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
6 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
8 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
10 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
11 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
12 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
13 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
14 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
15 .\" SUCH DAMAGE.
16 .\"
17 .\"*******************************************************************
18 .\"
19 .\" This file was generated with po4a. Translate the source file.
20 .\"
21 .\"*******************************************************************
22 .\"
23 .\" Japanese Version Copyright (c) 2005 Yuichi SATO
24 .\"         all rights reserved.
25 .\" Translated Tue Apr  5 04:59:02 JST 2005
26 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
27 .\"
28 .Dd March 23, 2002
29 .Dt ACL 5
30 .Os "Linux ACL"
31 .Sh 名前
32 .Nm acl
33 .Nd アクセス制御リスト (Access Control Lists)
34 .Sh 説明
35 この man ページは POSIX アクセス制御リストについて説明している。 ACL はファイルとディレクトリに対して、 より洗練された任意アクセス権
36 (discretionary access right) を 定義するのに使われる。
37 .Sh ACL タイプ
38 全てのオブジェクトは、そのオブジェクトに対する任意のアクセスを決定する ACL に関連付けられていると考えることができる。 この ACL はアクセス
39 AC と呼ばれる。 これに加えて、ディレクトリに関連付けられた ACL がある。 この ACL はディレクトリ内で作成されたオブジェクトの
40 最初のアクセス ACL を決定する。 この ACL はデフォルト ACL と呼ばれる。
41 .Sh ACL エントリ
42 ACL は ACL エントリの集合で構成される。 ACL エントリは、それが関連付けられたオブジェクトの アクセス許可 (permission)
43 を指定する。 アクセス許可は、個々のユーザまたはユーザのグループに対する 読み出し・書き込み・検索/実行の許可の組み合わせである。
44 .Pp
45 ACL エントリには、エントリタグ型・ オプションとしてのエントリタグ修飾子 (qualifier)・許可の集合が含まれる。
46 ここでは、修飾子という単語を ACL エントリのエントリタグ修飾子を表すのに使う。
47 .Pp
48 修飾子は、ACL_USER または ACL_GROUP というタグ型のエントリに対して、 それぞれユーザまたはグループの識別子を表す。 ACL_USER
49 と ACL_GROUP 以外のタグ型のエントリは、 定義された修飾子を持たない。
50 .Pp
51 以下のエントリタグ型が定義されている:
52 .Bl -tag -offset indent -width ACL_GROUP_OBJ.
53 .It ACL_USER_OBJ
54 ACL_USER_OBJ エントリはファイル所有者に対するアクセス権を表す。
55 .It ACL_USER
56 ACL_USER エントリはエントリの修飾子で識別されるユーザに対するアクセス権を表す。
57 .It ACL_GROUP_OBJ
58 ACL_GROUP_OBJ エントリはファイルグループに対するアクセス権を表す。
59 .It ACL_GROUP
60 ACL_GROUP エントリはエントリの修飾子で識別される グループに対するアクセス権を表す。
61 .It ACL_MASK
62 ACL_MASK エントリは ACL_USER, ACL_GROUP_OBJ, ACL_GROUP 型のエントリで 許可される最大のアクセス権を表す。
63 .It ACL_OTHER
64 ACL_OTHER エントリは ACL における他のどのエントリともマッチしない プロセスのアクセス権を表す。
65 .El
66 .Pp
67 アクセスチェックが実行される場合、実効 (effective) ユーザ ID に対して ACL_USER_OBJ と ACL_USER
68 エントリがテストされる。 実効グループ ID は、全ての補助 (supplementary) グループ ID と同様に、 ACL_GROUP_OBJ と
69 ACL_GROUP エントリに対してテストされる。
70 .Sh 有効な ACL
71 有効な ACL には ACL_USER_OBJ, ACL_GROUP_OBJ, ACL_OTHER タグ型のうち 何れか 1
72 つだけのエントリが含まれる。 ACL_USER と ACL_GROUP タグ型のエントリは、 0 回以上 ACL に出現することができる。
73 ACL_USER または ACL_GROUP タグ型のエントリを含む ACL は、 ACL_MASK タグ型のエントリを 1
74 つだけ含まなければならない。 ACL_USER または ACL_GROUP タグ型のエントリが ACL に含まれない場合、 ACL_MASK
75 エントリはオプションである。
76 .Pp
77 .\"minimal vs. extended ACLs
78 全てのユーザ ID 修飾子は、ACL_USER タグ型の全てのエントリにおいて 一意でなければならない。 また全てのグループ ID
79 修飾子は、ACL_GROUP タグ型の全てのエントリにおいて 一意でなければならない。
80 .Pp
81 .Fn acl_get_file
82 関数は、ディレクトリにデフォルト ACL が関連付けられていない場合、
83 ディレクトリのデフォルト ACL として、 ACL エントリが 1 つも
84 含まれない ACL を返す。
85 .Fn acl_set_file
86 関数も、ACL エントリが 1 つも含まない ACL を、 ディレクトリに対する有効
87 なデフォルト ACL として受け付ける。 このような ACL はディレクトリに
88 デフォルト ACL を関連付けないことを表す。 これは
89 .Fn acl_delete_def_file
90 関数を使うのと等価である。
91 .Sh ACL エントリとファイル許可ビットの対応
92 ACL で定義される許可は、ファイル許可ビットで指定される許可の 上位集合 (superset) である。 ファイル所有者に対して定義される許可は、
93 ACL_USER_OBJ エントリの許可に対応する。 ACL に ACL_MASK エントリがない場合、ファイルグループに対して定義される許可は、
94 ACL_GROUP_OBJ エントリの許可に対応する。 ACL に ACL_MASK エントリがある場合、ファイルグループに対して定義される許可は、
95 ACL_MASK エントリの許可に対応する。 他のクラスに対して定義される許可は、 ACL_OTHER_OBJ エントリの許可に対応する。
96 .Pp
97 ファイル許可ビットを変更すると、関連付けられた ACL エントリが変更される。 ACL エントリの許可を変更すると、ファイル許可ビットが変更される。
98 .Sh オブジェクトの作成とデフォルト ACL
99 ファイルオブジェクトのアクセス ACL は、
100 .Fn creat ,
101 .Fn mkdir ,
102 .Fn mknod ,
103 .Fn mkfifo ,
104 .Fn open
105 関数のいずれかでオブジェクトが作られたときに初期化される。 デフォルト ACL
106 がディレクトリと関連付けられている場合、 ファイルオブジェクトを作成する関数の
107 .Va mode
108 引き数とディレクトリのデフォルト ACL
109 を使って、 新しいオブジェクトの ACL が決定される:
110 .Bl -enum
111 .It 
112 新しいオブジェクトは、それが含まれるディレクトリのデフォルト ACL を アクセス ACL として継承する。
113 .It 
114 ファイル許可ビットに対応するアクセス ACL エントリが修正され、
115 .Va mode
116 引き数で指定されていない許可ビットを含まないようにされる。
117 .El
118 .Pp
119 ディレクトリにデフォルト ACL が関連付けられていない場合、 ファイルオブジェクトを作成する関数の
120 .Va mode
121 引き数とファイル作成マスク
122 .Xr ( umask 2
123 を参照) を使って、新しいオブジェクトの ACL が決定される:
124 .Bl -enum
125 .It 
126 新しいオブジェクトには、タグ型 ACL_USER_OBJ, ACL_GROUP_OBJ, ACL_OTHER の エントリを含むアクセス ACL
127 が割り当てられる。 これらのエントリの許可は、ファイル作成マスクで指定された許可に設定される。
128 .It 
129 ファイル許可ビットに対応するアクセス ACL エントリが修正され、
130 .Va mode
131 引き数で指定されていない許可ビットを含まないようにされる。
132 .El
133 .Sh アクセスチェックアルゴリズム
134 プロセスは、ACL で保護されたファイルオブジェクトに対して、 読み出し・書き込み・実行/検索を要求することができる。 アクセスチェックアルゴリズムは
135 オブジェクトへのアクセスを許可するか否かを決定する。
136 .Bl -enum
137 .It 
138 .Sy If
139 プロセスの実効ユーザ ID がファイルオブジェクト所有者のユーザ ID と一致する。
140 .Sy then
141 .Pp
142 .in +4
143 .Bd -filled
144 .Sy if
145 要求された許可が ACL_USER_OBJ エントリに含まれるならば、アクセスは許可される。
146 .Pp
147 .Sy else
148 アクセスは拒否される。
149 .in -4
150 .Ed
151 .It 
152 .Sy "else if"
153 プロセスの実効ユーザ ID が ACL_USER 型の何れかのエントリの修飾子と一致する。
154 .Sy then
155 .Pp
156 .in +4
157 .Bd -filled
158 .Sy if
159 一致した ACL_USER エントリと ACL_MASK エントリに
160 要求された許可が含まれるならば、アクセスは許可される。
161 .Pp
162 .Sy else
163 アクセスは拒否される。
164 .in -4
165 .Ed
166 .It 
167 .Sy else if
168 プロセスの実効グループ ID または何れかの補助グループ ID が、 ファイルグループまたは ACL_GROUP
169 型の何れかのエントリの修飾子と一致する。
170 .Sy then
171 .Pp
172 .in +4
173 .Bd -filled
174 .Sy if
175 ACL が ACL_MASK エントリを含む。
176 .Sy then
177 .in +4
178 .Bd -filled
179 .Sy if
180 ACL_MASK エントリおよび一致する ACL_GROUP_OBJ または ACL_GROUP エントリの
181 何れかに、要求された許可が含まれるならば、アクセスは許可される。
182 .Pp
183 .Sy else
184 アクセスは拒否される。
185 .Pp
186 .in -4
187 .Ed
188 .Sy else
189 (ACL_MASK エントリを含まない ACL_GROUP エントリは存在しない点に注意すること)
190 .in +4
191 .Bd -filled
192 .Sy if
193 ACL_GROUP_OBJ エントリが要求された許可を含むならば、アクセスは許可される。
194 .Ed
195 .Pp
196 .Sy else
197 アクセスは拒否される。
198 .Pp
199 .in -4
200 .Ed
201 .in -4
202 .Ed
203 .It 
204 .Sy else if
205 ACL_OTHER エントリが要求された許可を含むならば、アクセスは許可される。
206 .It 
207 .Sy else
208 アクセスは拒否される。
209 .El
210 .\".It
211 .\"Checking whether the requested access modes are granted by the matched entry.
212 .\".El
213 .Sh ACL テキスト形式
214 ACL を表現するために長いテキスト形式と短いテキスト形式が定義されている。 両方の形式において、ACL エントリはコロン区切られた 3
215 つのフィールド、 ACL エントリタグ型・ACL エントリ修飾子・任意のアクセス許可で表現される。 1
216 番目のフィールドは以下のエントリタグ型キーワードの何れかを含む:
217 .Bl -tag -offset indent -width group.
218 .It Li user
219 .Li user
220 ACL エントリは、ファイル所有者 (エントリタグ型 ACL_USER_OBJ) と 指定されたユーザ (エントリタグ型
221 ACL_USER) に対して 許可されるアクセスを指定する。
222 .It Li group
223 .Li group
224 ACL エントリは、ファイルグループ (エントリタグ型 ACL_GROUP_OBJ) と 指定されたグループ (エントリタグ型
225 ACL_GROUP) に対して 許可されるアクセスを指定する。
226 .It Li mask
227 .Li mask
228 ACL エントリは、ファイル所有者に対する
229 .Li user
230 エントリと
231 .Li other
232 エントリを除く、
233 全ての ACL (エントリタグ型 ACL_MASK) に対して許可されるアクセスのうち 最大のものを指定する。
234 .It Li other
235 .Li other
236 ACL エントリは、どの
237 .Li user
238 ACL エントリにも
239 .Li group
240 ACL
241 エントリにもマッチしない (エントリタグ型 ACL_OTHER) の プロセスに対して許可されるアクセスを指定する。
242 .El
243 .Pp
244 2 番目のフィールドは、 エントリタグ型 ACL_USER または ACL_GROUP のエントリの場合、 ACL
245 エントリに関連付けられているユーザまたはグループ識別子を含む。 その他のエントリの場合、このフィールドは空になる。 ユーザ識別子はユーザ名でも 10
246 進数のユーザ ID 番号でもよい。 グループ識別子はグループ名でも 10 進数のグループ ID 番号でもよい。
247 .Pp
248 3 番目のフィールドは任意のアクセス許可を保持する。 書き出し・読み込み・検索/実行の許可は、
249 .Li r ,
250 .Li w ,
251 .Li x
252 という文字でこの順番で表される。 ACL エントリにこれらの許可がない場合、各文字は
253 .Li \-
254 文字で置き換えられる。
255 テキスト形式から内部表現に変換する場合、 保持していない許可は指定する必要がない。
256 .Pp
257 各 ACL エントリの始めと終わり、そして フィールド区切り文字 (コロン文字) の直前と直後には、 空白を入れることができる。
258 .Ss 長いテキスト形式
259 長いテキスト形式では、1 行に 1 つの ACL エントリを保持する。 さらにナンバー記号
260 .No ( Li # )
261 でコメントを開始することが可能で、行の終りまでがコメントになる。 ACL_MASK エントリに含まれない許可が ACL_USER,
262 ACL_GROUP_OBJ, ACL_GROUP ACL エントリに含まれる場合、 そのエントリの後にはナンバー記号と文字列
263 \(lqeffective:\(rq と そのエントリで定義される実効アクセス許可が続く。 以下は長いテキスト形式の例である:
264 .Bd -literal -offset indent
265 user::rw-
266 user:lisa:rw-         #effective:r--
267 group::r--
268 group:toolies:rw-     #effective:r--
269 mask::r--
270 other::r--
271 .Ed
272 .Ss 短いテキスト形式
273 短いテキスト形式は、コンマで区切られた ACL エントリの並びであり、 入力として使われる。 コメントはサポートされていない。
274 エントリタグ型キーワードは省略されない完全な形式でも 1 文字の省略形でも指定できる。
275 .Li user
276 の省略形は
277 .Li u ,
278 .Li group
279 の省略形は
280 .Li g ,
281 .Li mask
282 の省略形は
283 .Li m ,
284 .Li other
285 の省略形は
286 .Li o
287 である。 許可には、
288 .Li r ,
289 .Li w ,
290 .Li x
291 という文字のうち 1
292 つ以上を、任意の順番で含めることができる。 以下は短いテキスト形式の例である:
293 .Bd -literal -offset indent
294 u::rw-,u:lisa:rw-,g::r--,g:toolies:rw-,m::r--,o::r--
295 g:toolies:rw,u:lisa:rw,u::wr,g::r,o::r,m::r
296 .Ed
297 .Sh 理論的根拠
298 IEEE 1003.1e draft 17 は、 タグ型 ACL_MASK のエントリを含むアクセス制御リストを定義しており、
299 画一的ではないファイル許可ビット間の対応付けを定義している。 標準化作業グループは、IEEE 1003.1 (\(lqPOSIX.1\(rq)
300 と互換性のない アプリケーションが ACL を持つシステム上でも機能することを保証するために、 比較的複雑なインタフェースを定義した。 IEEE
301 1003.1e draft 17 には、このインタフェースを選択する理論的根拠が セクション B.23 に書かれている。
302 .Sh ファイルユーティリティの変更
303 ACL をサポートするシステムでは、ファイルユーティリティ
304 .Xr ls 1 ,
305 .Xr cp 1 ,
306 .Xr mv 1
307 は自身の動作を以下のように変更する:
308 .Bl -bullet
309 .It 
310 デフォルト ACL を持つファイル、または必要とされる 3 つ以上の ACL エントリを 保持するアクセス ACL を持つファイルに対して、
311 .Xr ls 1
312 ユーティリティを長い形式
313 .Ic "ls \-l"
314 で実行すると、 プラス記号
315 .No ( Li + )
316 が許可文字列の後に表示される。
317 .It 
318 .Fl p
319 フラグが指定された場合、
320 .Xr cp 1
321 ユーティリティは ACL も保存する。 保存できない場合は警告が出される。
322 .It 
323 .Xr mv 1
324 ユーティリティは常に ACL を保存する。
325 保存できない場合は警告が出される。
326 .El
327 .Pp
328 .Xr chmod 1
329 ユーティリティと
330 .Xr chmod 2
331 システムコールのアクセス ACL に対する影響については、
332 .Sx "「ACL エントリとファイル許可ビットの対応」
333 で説明されている。
334 .Sh 準拠
335 IEEE 1003.1e draft 17 (\(lqPOSIX.1e\(rq) は、 IEEE 1003.1
336 標準に対するいくつかのセキュリティ拡張について記述している。 1003.1e での作業は放棄されたが、多くの UNIX 系システムは POSIX.1e
337 draft 17 またはそれ以前のドラフトの一部を実装している。
338 .Pp
339 Linux アクセス制御リストは、 POSIX.1e のアクセス制御リストで定義されている全ての関数セットと いくつかの拡張を実装している。 この実装は
340 POSIX.1e draft 17 に完全に準拠する。 拡張にはその旨が記されている。 アクセス制御リストの操作関数は、 ACL ライブラリ
341 (libacl, \-lacl) で定義されている。 POSIX 互換のインタフェースは
342 .Li <sys/acl.h>
343 ヘッダで宣言されている。 これらの関数に対する Linux 固有の拡張は、
344 .Li <acl/libacl.h>
345 ヘッダで宣言されている。
346 .Sh 関連項目
347 .Xr chmod 1 ,
348 .Xr creat 2 ,
349 .Xr getfacl 1 ,
350 .Xr ls 1 ,
351 .Xr mkdir 2 ,
352 .Xr mkfifo 2 ,
353 .Xr mknod 2 ,
354 .Xr open 2 ,
355 .Xr setfacl 1 ,
356 .Xr stat 2 ,
357 .Xr umask 1
358 .Ss POSIX 1003.1e DRAFT 17
359 .Xr "http://www.guug.de/~winni/posix.1e/download.html"
360 .Ss カテゴリによる POSIX 1003.1e 関数の分類
361 .Bl -tag -width MMM
362 .It Sy ACL ストレージの管理
363 .Xr acl_dup 3 ,
364 .Xr acl_free 3 ,
365 .Xr acl_init 3
366 .It Sy ACL エントリの操作
367 .Xr acl_copy_entry 3 ,
368 .Xr acl_create_entry 3 ,
369 .Xr acl_delete_entry 3 ,
370 .Xr acl_get_entry 3 ,
371 .Xr acl_valid 3
372 .Pp
373 .Xr acl_add_perm 3 ,
374 .Xr acl_calc_mask 3 ,
375 .Xr acl_clear_perms 3 ,
376 .Xr acl_delete_perm 3 ,
377 .Xr acl_get_permset 3 ,
378 .Xr acl_set_permset 3
379 .Pp
380 .Xr acl_get_qualifier 3 ,
381 .Xr acl_get_tag_type 3 ,
382 .Xr acl_set_qualifier 3 ,
383 .Xr acl_set_tag_type 3
384 .It Sy オブジェクトの ACL の操作
385 .Xr acl_delete_def_file 3 ,
386 .Xr acl_get_fd 3 ,
387 .Xr acl_get_file 3 ,
388 .Xr acl_set_fd 3 ,
389 .Xr acl_set_file 3
390 .It Sy ACL 形式の変換
391 .Xr acl_copy_entry 3 ,
392 .Xr acl_copy_ext 3 ,
393 .Xr acl_from_text 3 ,
394 .Xr acl_to_text 3 ,
395 .Xr acl_size 3
396 .El
397 .Ss 有効性による POSIX 1003.1e 関数の分類
398 最初の関数のグループは POSIX ライクなアクセス制御リストを持つ 大部分のシステムでサポートされている。 一方、2
399 番目の関数のグループをサポートしているシステムは少ない。 移植を予定するアプリケーションでは、2 番目のグループを避けた方が良い。
400 .Pp
401 .Xr acl_delete_def_file 3 ,
402 .Xr acl_dup 3 ,
403 .Xr acl_free 3 ,
404 .Xr acl_from_text 3 ,
405 .Xr acl_get_fd 3 ,
406 .Xr acl_get_file 3 ,
407 .Xr acl_init 3 ,
408 .Xr acl_set_fd 3 ,
409 .Xr acl_set_file 3 ,
410 .Xr acl_to_text 3 ,
411 .Xr acl_valid 3
412 .Pp
413 .Xr acl_add_perm 3 ,
414 .Xr acl_calc_mask 3 ,
415 .Xr acl_clear_perms 3 ,
416 .Xr acl_copy_entry 3 ,
417 .Xr acl_copy_ext 3 ,
418 .Xr acl_copy_int 3 ,
419 .Xr acl_create_entry 3 ,
420 .Xr acl_delete_entry 3 ,
421 .Xr acl_delete_perm 3 ,
422 .Xr acl_get_entry 3 ,
423 .Xr acl_get_permset 3 ,
424 .Xr acl_get_qualifier 3 ,
425 .Xr acl_get_tag_type 3 ,
426 .Xr acl_set_permset 3 ,
427 .Xr acl_set_qualifier 3 ,
428 .Xr acl_set_tag_type 3 ,
429 .Xr acl_size 3
430 .Ss LINUX 拡張
431 これらの移植性のない拡張は、Linux システムでのみ有効である。
432 .Pp
433 .Xr acl_check 3 ,
434 .Xr acl_cmp 3 ,
435 .Xr acl_entries 3 ,
436 .Xr acl_equiv_mode 3 ,
437 .Xr acl_error 3 ,
438 .Xr acl_extended_fd 3 ,
439 .Xr acl_extended_file 3 ,
440 .Xr acl_from_mode 3 ,
441 .Xr acl_get_perm 3 ,
442 .Xr acl_to_any_text 3
443 .Sh 著者
444 Andreas Gruenbacher, <a.gruenbacher@bestbits.at>