File: exports.5

package info (click to toggle)
manpages-ja 0.5.0.0.20221215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 29,304 kB
  • sloc: perl: 161; makefile: 61
file content (395 lines) | stat: -rw-r--r-- 17,355 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
.\"
.\" Original manual page is a part of nfs-server package.
.\" Following is a exerpt from README of version 2.2beta47.
.\" 
.\" 7.  Copyright
.\" 
.\" Much of the code in this package was originally  written  by
.\" Mark Shand, and is placed under the following copyright:
.\" 
.\"    This  software may be used for any purpose provided
.\"    the above  copyright  notice  is  retained.  It  is
.\"    supplied  as  is,  with  no warranties expressed or
.\"    implied.
.\" 
.\" Other code, especially that written by Rick Sladkey and some
.\" replacement routines included from the GNU libc, are covered
.\" by the GNU General Public License, version 2,  or  (at  your
.\" option) any later version.
.\" 
.\" Japanese Version Copyright (c) 1997 ISHIOKA Takashi
.\"         all rights reserved.
.\" Translated Mon Sep  8 14:02:18 1997
.\"         by ISHIOKA Takashi
.\" Mon Feb  9 15:16:20 1998: correction
.\" Modified Wed 11 Nov 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated & Modified Sun Jan 27 17:30:35 JST 2002
.\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
.\" Modified Tue Feb 19 19:06:53 JST 2002 by Yuichi SATO
.\"
.TH EXPORTS 5 "11 August 1997"
.UC 5
.SH 名前
exports \- エクスポート (export) される NFS ファイルシステム
.SH 書式
.B /etc/exports
.SH 説明
.I /etc/exports
ファイルはファイルシステムのアクセスコントロールリストで、
どのファイルシステムを NFS クライアントにエクスポート (export) してよいか、
という情報を与える。
これは NFS mount デーモン
.BR mountd (8)
ならびに
NFS file server デーモン
.BR nfsd (8)
の双方で用いられる。
.PP
このファイルの書式は SunOS の
.I exports
ファイルとほぼ同じである。ただし指定できるオプションが
いくつか追加されている。
それぞれの行には、マウントポイントと、
そのポイントのファイルシステムをマウントできる
マシンやネットグループのリストが書かれている。
マウントパラメータのリストを括弧でくくったものを、
それぞれのマシンの名前の後に置くこともできる。
空行は無視され、# 以降行末まではコメントとみなされる。
行末にバックスラッシュをおけば、エントリは次の行に継続できる。
.PP
.SS マシン名のフォーマット
NFS クライアントはいろいろな方法で指定できる。
.IP "single host
これはもっとも普通のフォーマットである。ホストの指定には、
レゾルバが認識できる省略形、FQDN、IP アドレスのどれを用いてもよい。
.IP "netgroups
NIS のネットグループを
.I @group
のように与えることができる。ネットグループのすべてのメンバーのうち、
ホストの部分だけが取り出され、アクセスリストに追加される。
ホストの部分が空だったり、単一のダッシュ (\-) だったものは無視される。
.IP ワイルドカード
マシン名の指定には、ワイルドカード文字として
\fI*\fP と \fI?\fP を用いることができる。
これらを使うと \fIexports\fR ファイルをコンパクトにできる。
例えば \fI*.cs.foo.edu\fR はドメイン \fIcs.foo.edu\fR にある
すべてのホストにマッチする。
ただし、これらのワイルドカード文字はドメイン名のドット (.) にはマッチしない。
したがって上記のパターンは、ドメイン内の
\fIa.b.cs.foo.edu\fR のようなホストにはマッチしない。
.IP "IP networks
ディレクトリを IP の (サブ) ネットワークに存在するすべてのホストに
同時にエクスポートすることもできる。
これには IP アドレスとネットマスクのペアを
.I address/netmask
のように指定すればよい。
.TP
.B =public
これは特殊な意味を持つ「ホスト名」で、その前に与えられたディレクトリ
が public root ディレクトリであることを示す
(WebNFS と public root ハンドルの詳細に関しては
.BR nfsd (8)
の WebNFS のセクションを参照のこと)。
この書式を用いる際には、
.B =public
がその行での唯一のホスト名エントリでなければならない。
またエクスポートオプションを指定してはならない。
この指定によって、
ディレクトリが実際にエクスポートされるわけでは\fBない\fPことに注意すること。
エクスポートオプションは、これとは別のエントリで指定する必要がある。
.PP
public root パスは
.I nfsd
.B \-\-public\-root
オプションを指定して起動することによっても指定できる。
public root の複数指定は無視される。
.PP
.SS 一般的なオプション
.IR mountd " と " nfsd
は以下のエクスポートオプションを受け付ける。
.TP
.IR secure "\*d
このオプションを指定すると、IPPORT_RESERVED (1024) より小さな
internet ポートから発したリクエストしか受けつけない。
このオプションはデフォルトで有効になっている。
無効にするには
.IR insecure
と指定する。
.TP
.IR rw
クライアントによるファイルとディレクトリの変更を許可する。
デフォルトでは、クライアントは読み込みのリクエストだけに制限されている。
(これは
.I ro
オプションで明示した場合も同じ)。
.TP
.I noaccess
このオプションを付けたクライアントは、
そのディレクトリ以下のすべてのファイルに対してアクセスできなくなる。
あるディレクトリ階層をクライアントにエクスポートするとき、
特定のサブディレクトリを除きたい場合などに便利である。
noaccess フラグが付いたディレクトリのクライアントからの見え方は、
非常に制限されたものとなる。
ディレクトリ属性と、`.' および `..' の閲覧だけが許される。
readdir に対して返されるエントリもこの 2 つだけになる。
.TP
.IR link_relative
絶対パス形式のシンボリックリンクを相対パス形式のリンクに変換する
(絶対パス形式とは、リンクの内容が "/" で始まるものである)。
変換は次のように行われる。
まずリンクが置かれているディレクトリの、サーバのルートからの
深さを取得する。そしてその数だけ '../' を絶対リンクの前に付加する。
マウントポイントのルートからの位置が異なる場合、
この変換には微妙な (おそらく障害の原因となる)
あいまいさが含まれる可能性がある。
.TP
.IR link_absolute
全てのシンボリックリンクをそのままにする。これがデフォルトである。
.SS ユーザ ID のマッピング
.PP
サーバマシン上のファイルに対する
.I nfsd
によるアクセスコントロールは、
それぞれの NFS RPC request の際に与えられる uid と gid に基づいている。
ユーザは通常、サーバ上にある自分のファイルには、
それが普通のファイルシステム上にあるのと同様に
アクセス可能であることを期待している。
これにはクライアントとサーバ上で用いられる
uid と gid がそれぞれ同じである必要があるが、
これは常に真であるとは限らず、望ましいとも限らない。
.PP
クライアントマシンの root が NFS サーバのファイルにアクセスするとき、
サーバの root として扱われてしまうのは、ほとんどの場合は望ましくない。
このため uid 0 は普通は別の id (anonymous や
.I nobody
uid) にマッピングされる。
この動作は  `root squashing' と呼ばれるが、これがデフォルトである。
.I no_root_squash 
を使えばオフにできる。
.PP
デフォルトでは、
.I nfsd
は起動時に password ファイル中の
.I nobody
ユーザを参照して、
anonymous の uid と gid を得ようとする。
もしそれが見つからない場合には、
uid と gid として -2 (つまり 65534) を用いる。
これらの数値は 
.IR anonuid " と " anongid
オプションによって変更できる。
.PP
これに加え、
.I nfsd
によって nobody に割り当てるべき適当な uid と gid とを指定することもできる。
最後に、
.I all_squash
オプションを指定すれば、
全ての user request を anonymous uid に割り当てることもできる。
.PP 
マシンごとに uid が異なるような場合への導入を容易にするため、
.I nfsd
ではサーバの uid をクライアントの uid に (あるいはその逆に) 
動的にマッピングする手法をいくつか提供している。
静的なマッピングファイル、NIS ベースのマッピング、
.I ugidd
ベースのマッピング、である。
.PP
.I ugidd
ベースのマッピングは
.I map_daemon
オプションを指定して UGID RPC プロトコルを使えば可能となる。
このプロトコルを動かすにはクライアントで
.IR ugidd (8)
mapping デーモンを動作させる必要がある。
これは 3 つある方法の中で、セキュリティ的には最悪である。
なぜなら
.I ugidd
を動作させると、誰でもクライアントに問い合わせて、
有効なユーザ名のリストを入手できてしまうからである。
.I ugidd
へのアクセスを特定のホストのみに制限して、身を守ることもできる。
これには許可するホストのリストを
.I hosts.allow
または
.I hosts.deny
ファイルに記述すればよい。サービス名は
.I ugidd
である。これらのファイルの文法については、
.IR hosts_access (5)
を参照してほしい。
.PP
静的なマッピングは
.I map_static
オプションによって動作させることができる。
このオプションは、マッピングを記述したファイルの名前を引数にとる。
NIS ベースのマッピングは、クライアントの NIS サーバに問い合わせて、
サーバーホストでのユーザ名およびグループ名から
クライアントでのユーザ名およびグループ名への、
マッピング情報を入手する。
.PP
以下にマッピングオプションの完全なリストをあげる:
.TP
.IR root_squash
uid/gid が 0 のリクエストを annonymous uid/gid にマッピングする。
このオプションは、root 以外の uid には適用されない。
他にも注意すべき uid は存在する (例えば
.I bin 
など) ので、注意する必要がある。
.TP
.IR no_root_squash
root squashing を無効にする。
このオプションは主にディスクレスクライアントにとって便利である。
.TP
.IR squash_uids " and " squash_gids
このオプションは、annonymous にマッピングされる
uid や gid のリストを明示するためのものである。
id のリストとしては以下のような指定が有効である:
.IP
.IR squash_uids=0-15,20,25-50
.IP
通常の squash リストはもっとずっと簡単なものになるだろうが。
.TP
.IR all_squash
全ての uid とgid を anonymous にマッピングする。
これは NFS エクスポートされた公開 FTP ディレクトリや、
news のスプールディレクトリ等に便利である。
これと逆のオプションは
.IR no_all_squash 
であり、こちらがデフォルトになっている。
.TP
.IR map_daemon
このオプションは 動的な uid/gid のマッピングを有効にする。
NFS request 中のそれぞれの uid はサーバ上の対応する uid に変換され、
NFS reply 中の uid はそれぞれ逆に変換される。
このオプションを用いるには、クライアントホストで
.BR rpc.ugidd (8)
が動作していることが必要である。
デフォルトでは、全ての uid を変えない
.I map_identity 
となっている。
普通の squash オプションは、
動的なマッピングか否かを気にすることなく適用できる。
.TP
.IR map_static
このオプションを指定すると静的なマッピングが可能となる。
uid/gid マッピングが記述されたファイル名を以下のように指定する。
.IP
.IR map_static=/etc/nfs/foobar.map
.IP
ファイルのフォーマットは以下のようなものである。
.IP
.nf
.ta +3i
# Mapping for client foobar:
#    remote     local
uid  0-99       -       # squash these
uid  100-500    1000    # map 100-500 to 1000-1400
gid  0-49       -       # squash these
gid  50-100     700     # map 50-100 to 700-750
.fi
.TP
.IR map_nis
このオプションを指定すると NIS ベースの uid/gid マッピングが可能となる。
例えば、サーバが uid 123 の指定を受けると、
サーバはまずその uid に対応するローカルのログイン名を調べる。
次に NFS クライアントの NIS サーバに接続して、
そのログイン名に対応する uid を取得する。
.IP
これを行うには、NFS サーバがクライアントの NIS ドメインを
知っていなければならない。
このドメインは
.I map_nis
オプションの引数として以下のように指定する。
.IP
.I map_nis=foo.com
.IP
ただここに NIS ドメインを記述するだけでは、通常は充分ではない。
.I nfsd
が NIS サーバにコンタクトできるようにするには、
他の作業が必要となるだろう。
利用しているディストリビューションが NYS ライブラリを使っている場合は、
クライアントのドメインのサーバを
.I /etc/yp.conf
に一つ以上指定する必要があるだろう。
他の NIS ライブラリを用いている場合には、
.I yp.conf
によって設定できるような、特殊な
.IR ypbind (8)
を入手する必要があるかもしれない。
.TP
.IR anonuid " および " anongid
これらのオプションは anonymous アカウントの uid と gid を明示的にセットする。
これは、全てのリクエストが一人のユーザからになるような
PC/NFS clients にとって主に有効である。
例えば、以下の「例」のセクションでの
.I /home/joe
というエクスポートエントリを見てほしい。
この例では、(joe からのものであると思われる) 全てのリクエストが
uid 150 にマッピングされる。
.IP
.SH 例
.PP
.nf
.ta +3i
# sample /etc/exports file
/               master(rw) trusty(rw,no_root_squash)
/projects       proj*.local.domain(rw)
/usr            *.local.domain(ro) @trusted(rw)
/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
/pub            (ro,insecure,all_squash)
/pub/private    (noaccess)
.fi
.PP
1 行目は、master と trusty に対して、
すべてのファイルシステムのマウント許可を出している。
書き込みの許可に加え、さらに trusty に対しては、
すべての uid squashing も無効にしている。
2 行目と 3 行目は、ホスト名へのワイルドカードの利用と、
ネットグループ (@trusted' のエントリ) の例である。
4 行目は、上で述べた PC/NFS クライアント用エントリの例である。
5 行目は、公開 FTP ディレクトリを世界中の全てのホストにエクスポートしている。
すべてのリクエストは nobody アカウントで実行される。
またこのエントリ中の
.I insecure 
オプションによって、NFS 用 port を使わないように実装された NFS
クライアントからのアクセスも許可している。
最後の行では、private ディレクトリへのアクセスをすべての
クライアントに対して拒否するようにしている。
.SH 警告
他の NFS Server の実装と違い、
この
.B nfsd
では、例えば
.IR /usr " と " /usr/X11R6 
のように、あるディレクトリとそのサブディレクトリとの両方を
同じホストにエクスポートすることができる。
この場合、特定の度合がもっとも高いエントリのマウントオプションが適用される。
例えばクライアントホスト上のユーザが
.IR /usr/X11R6 
のファイルにアクセスする場合は、
.I /usr/X11R6 
のエントリであたえられた マウントオプションが適用される。
このルールは、エントリのホスト指定が
ワイルドカードやネットグループのときにも適用される。
.SH ファイル
/etc/exports
.SH 返り値
.BR nfsd (8)
.BR mountd (8)
が起動していれば、
ファイルの解釈中のエラーは常に
.BR syslogd (8)
を用いて報告される。
DAEMON からの NOTICE レベルとなる。
そのとき、未知のホスト全てが報告される。
しかし起動時には
.BR named (8)
が全てのホストを知らない場合もありうる。
したがってホストが見つかるたびに、それらは
.BR syslogd (8)
に、同じパラメータで報告される。
.SH 関連項目 
mountd(8), nfsd(8)