注意: たとえファイルシステムのサブディレクトリーだけをエクスポートしていても、 (NetBSD を含む) 多くのオペレーティングシステム上のNFS サーバーでは アクセス要求を実際にエクスポートされたサブディレクトリーに制限していないので、 悪意あるクライアントはファイルシステム全体へアクセスし得る可能性があります。
次のディレクトリーは root が読み書きできることが必要です:
/ /var /etc /devその結果、一番簡単なのは、 /home および /usr を /export/client/root から分離して、 root の読み書き権限をはずしてエクスポートすることです。 この HOW-TO 内を通じて、 /usr と /home を明示的に分けているのは、このためです。 この通りにすると、ディレクトリー構造はこのようになります:
サーバー (エクスポートディレクトリー) | クライアント |
/export/client/root | / |
/export/client/swap (ファイル) | /swap (ファイル) |
/export/client/usr | /usr |
/export/client/home | /home |
注としては、 /swap はファイルとしてマウントされるでしょう。
また、サーバーが同一アーキテクチャー (例えば、 NetBSD/hp300 および sun3 の Motorola 680X0 マイクロプロセッサー、 NetBSD/sparc の Sparc マイクロプロセッサー、 および NetBSD/vax の Vax マイクロプロセッサー)で、 NetBSD が動作している場合は、クライアントは、 サーバーのディレクトリー構造の /usr を使うことができ、 ディスク使用量を大きく節約することができます。 この場合、 サーバーは /export/client/usr の代わりに /usr をエクスポートする必要があります。
いかなるホストも TCP wrapper 経由のアクセスを拒否しないことを 確認する必要があります。 /etc/hosts.deny および /etc/hosts.allow 中の nfsd, mountd, rpcbind および portmap エントリーを見てください。 これらのファイルを nfs アクセスを制限するのに使うなら、 hosts.deny 中の nfsd, mountd, rpcbind, および/または portmap エントリーをコメントアウトするか、 または、 hosts.allow にクライアントのエントリーを追加する必要があります。 多分、これらのデーモンを kill -HUP する必要があるでしょう。 注としては、 portmap は手の込んだことをしていて、また、いくつかのプラットフォームでは、 kill -HUP が実際にそれを kill することがあることです。 ホストがアクセスするファイルを変更した後、 nfs サーバーをリブートするのが一番簡単です。
これらいくつかのプラットフォームの nfs サーバーは問題を抱えていますが、 たいてい、小さな努力で次善策となれます。 これは、この HOW-TO の次の項で触れます。
NetBSD での nfs の設定
OpenBSD での nfs の設定
FreeBSD での nfs の設定
Mac OS X と Darwin での nfs の設定
Linux での nfs の設定
SunOS での nfs の設定
Solaris での nfs の設定
NEWS-OS での nfs の設定
NEXTSTEP での nfs の設定
HP-UX 7 での nfs の設定 (動かせません)
HP-UX 9 での nfs の設定
HP-UX 10 以降での nfs の設定
options NFSSERVERNetBSD で配布されている GENERIC カーネルには、これを含んでコンパイルされています。
#/etc/exports /export/client/root -maproot=root:wheel client.test.net /export/client/swap -maproot=root:wheel client.test.net /export/client/usr -maproot=nobody:nobody client.test.net /export/client/home -maproot=nobody:nobody client.test.net
もし、サーバーで NFS デーモンが動作してなければ、クライアントにこのように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が動作していても、ルートディレクトリーがクライアントに エクスポートされていなければ、このようにクライアントに表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root /export/client/swap -maproot=root:wheel client.test.netFreeBSD では、一つのファイルシステム (/export のような) 中に含まれる 複数のディレクトリーをクライアントに公開することは、その各ディレクトリーを /etc/exports で一行にまとめて書かない限り、できません。
また、クライアントの /home と /usr は /export/client/root 以下に置くようにする必要があります。 FreeBSD では、公開する各ディレクトリーを別ディレクトリーに分けて (さらに -maproot=root:wheel を外して)、 それぞれが異なる特性を持つようにすることはできません。
サーバーで NFS デーモンが動作していなければ、クライアントに次のように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1サーバーで NFS が走っていても、クライアントにルートディレクトリーを エクスポートしていなければ、クライアントに次のように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
# nicl . -create /exports/\\/export\\/client\\/root opts maproot=root:wheel # nicl . -create /exports/\\/export\\/client\\/root clients 192.168.0.10 # nicl . -create /exports/\\/export\\/client\\/swap opts maproot=root:wheel # nicl . -create /exports/\\/export\\/client\\/swap clients 192.168.0.10 # nicl . -create /exports/\\/export\\/client\\/usr opts maproot=nobody:nobody # nicl . -create /exports/\\/export\\/client\\/usr clients 192.168.0.10 # nicl . -create /exports/\\/export\\/client\\/home opts maproot=nobody:nobody # nicl . -create /exports/\\/export\\/client\\/home clients 192.168.0.10後から別のクライアントを同じ共有に加える場合は、そのプロパティ (最初に create したもの) に対して append します:
# nicl . -append /exports/\\/export\\/client\\/root clients 192.168.0.12
すべてうまくいっているか確認するためには、読み返してください:
# nicl . -read /exports/\\/export\\/client\\/root name: /export/client/root opts: maproot=root:wheel clients: 192.168.0.10 192.168.0.12
サーバーで NFS デーモンが動いていない場合は、クライアントは以下のように表示します:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1サーバーで NFS は動いているがルートディレクトリーをクライアントに公開していない場合は、 クライアントは以下のように表示します:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root client.test.net(rw,no_root_squash) /export/client/swap client.test.net(rw,no_root_squash) /export/client/usr client.test.net(rw,root_squash) /export/client/home client.test.net(rw,root_squash)
サーバーで NFS デーモンが動作していなければ、クライアントに次のように表示されるでしょう:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1サーバーで NFS が走っていて、でもクライアントに root ディレクトリーを エクスポートしていなければ、クライアントに次のように表示されるでしょう:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
カーネル NFS 問題:
linux のほとんどのバージョンで実装されているのは NFS2 だけで、この場合、 NetBSD は NFS3 で試行し、自動的に fall back します。 いくつかのバージョン (特に RedHat 6.0) では、 NFS2 および NFS3 の両方のマウント要求に対して、不正確な応答をし、 それで、 NFS3 による ファイルシステムのアクセスをすべて無視します。 この原因は、言うに言われぬ苦痛および、混乱です。
次善策は、 mountd を kill して、 NFS3 問題を防ぐオプションをつけて実行すること (すなわち rpc.mountd --no-nfs-version 3) です。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root -root=client /export/client/swap -root=client /export/client/usr /export/client/home
もし、サーバーで NFS デーモンが動作していなければ、クライアントにこのように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が動作していても、クライアントにルートディレクトリーが エクスポートされてなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
share -F nfs -o root=client /export/client/root share -F nfs -o root=client /export/client/swap share -F nfs -o rw=client /export/client/usr share -F nfs -o rw=client /export/client/home
数値 IP アドレスを使わず、名前をつかってください。数値 IP アドレスを使うと、 Solaris は何のエラーメッセージも出さずにアクセスを拒否します。
nfs デーモンが動作していなければ、実行する必要があります:
# /etc/init.d/nfs.server start
サーバーで NFS デーモンが動作していなければ、クライアントにこう表示されるでしょう:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS デーモンが動作していても、クライアントにルートディレクトリーが エクスポートされていなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root -root=client /export/client/swap -root=client /export/client/usr /export/client/home
もし、サーバーで NFS デーモンが動作していなければ、クライアントにこのように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が動作していても、クライアントにルートディレクトリーが エクスポートされていなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
また、 NEXTSTEP の慣習を守って、 /export/client の代わりに /private/export/client に クライアントのファイルの全てを置きたいかもしれません。
参考の為に、 NFSManager Exported Directories ウインドウがこのようになるべきであるという スナップショット があります。
サーバーで NFS デーモンが動作していなければ、 クライアントにこのように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が走っていても、クライアントにルートディレクトリーが エクスポートされていなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
私は、 HP-UX 7 の NFS サーバーは、 root の読み書きを制限できるとは 考えていません。
#/etc/exports /export/client/root client.test.net /export/client/swap client.test.net /export/client/usr client.test.net /export/client/home client.test.net
もしサーバーで NFS デーモンが動作していなければ、クライアントにこのように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が動作していても、クライアントにルートディレクトリーが エクスポートされていなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root -root=client.test.net /export/client/swap -root=client.test.net /export/client/usr -access=client.test.net /export/client/home -access=client.test.net
もし、サーバーで NFS デーモンが動作していなければ、クライアントに 次のように表示されます:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、 NFS が動作していても、クライアントにルートディレクトリーがエクスポート されていなければ、クライアントにこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
#/etc/exports /export/client/root -root=client.test.net /export/client/swap -root=client.test.net /export/client/usr -access=client.test.net /export/client/home -access=client.test.net
サーバーで NFS デーモンが動作していなければ、 クライアントにこのように表示されるでしょう:
le(0,0,0,0): Unknown error: code -1 boot: Unknown error: code -1もし、サーバーで NFS が動作していても、クライアントにルートディレクトリーを エクスポートしていなければ、クライアントにはこのように表示されます:
boot: no such file or directoryすべて順調にいけば、クライアントでいくつかの数字と、回転するカーソルが 表示されます。これで成功しました! この段階では、クライアントは ブートすることはできません。このまま続けると、 init が起動されるところで panic します。
クライアントのファイルシステムの設定に進む。
|
|