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)
|