<sect1 id="server">
<!--O
<title>Setting Up an NFS Server</title>
-->
<title>NFS サーバの設定</title>
<sect2 id="serverintro">
<!--O
 <title>Introduction to the server setup</title>
-->
 <title>サーバ設定の概略</title>
<!--O
 <para>
    It is assumed that you will be setting up both a server and a
    client.  If you are just setting up a client to work off of
    somebody else's server (say in your department), you can skip
    to <xref linkend="client">.  However, every client that is set up requires
    modifications on the server to authorize that client (unless 
    the server setup is done in a very insecure way), so even if you
    are not setting up a server you may wish to read this section to
    get an idea what kinds of authorization problems to look out for.
 </para>
-->
<para>
 ここではサーバとクライアントの両方を設定することを考えます。
 クライアントだけを設定して、誰か別の人のサーバ
 (例えば部門のサーバなど) につなぎたい場合は、
 <xref linkend="client"> に進んでください。
 しかし、クライアントを設定するたびに、
 サーバはそのクライアントからの接続を許すよう修正する必要があります
 (サーバの設定が非常に危険な場合を除けば)。
 従って自分でサーバを設定しない場合でも、
 このセクションは読んでおいたほうがいいでしょう。
 そうすれば認証関連の問題があった場合にどこを調べれば良いかわかるでしょうから。
</para>
<!--O
 <para>
    Setting up the server will be done in two steps: Setting up the 
    configuration files for NFS, and then starting the NFS services.
 </para>
-->
<para>
 サーバの設定は 2 つのステップからなります。
 まず NFS の設定ファイルを編集し、
 次に NFS サービスを実際に起動します。
</para>
</sect2>
<sect2 id="config">
<!--O
 <title>Setting up the Configuration Files</title>
-->
 <title>設定ファイルの編集</title>
<!--O
 <para>
   There are three main configuration files you will need to edit to 
   set up an NFS server: <filename>/etc/exports</filename>,
   <filename>/etc/hosts.allow</filename>, and  <filename>/etc/hosts.deny</filename>. 
   Strictly speaking, you only need to edit <filename>/etc/exports</filename> to get 
   NFS to work, but you would be left with an extremely insecure setup. You may also need 
   to edit your startup scripts; see <xref linkend="daemons"> for more on that.
 </para>
-->
<para>
 NFS サーバの設置にあたって編集しなければならない
 主要な設定ファイルは 3 つあります。
 <filename>/etc/exports</filename>,
 <filename>/etc/hosts.allow</filename>,
 <filename>/etc/hosts.deny</filename> です。
 本当のところを言うと、実際に NFS を動作させるには
 <filename>/etc/exports</filename> だけで良いのですが、
 これだと NFS は非常に危険な状態に置かれます。
 さらに、これらに加えて起動スクリプトを編集する必要もあるかもしれません。
 これについては <xref linkend="daemons"> を見てください。
</para>
<sect3 id="exports">
 <title>/etc/exports</title>
 <para>
<!--O
   This file contains a list of entries; each entry indicates a volume
   that is shared and how it is shared.  Check the man pages (<command>man 
   exports</command>) for a complete description of all the setup options for 
   the file, although the description here will probably satistfy 
   most people's needs.
-->
   このファイルにはエントリのリストが書かれており、
   各エントリは共有するボリュームと、
   それがどの様に共有されるかを記述します。
   このファイルにおける設定オプションのすべてを知るには
   man ページ (<command>man exports</command>)
   を見る必要がありますが、
   ここにある記述でも大抵の人の用途には足りるでしょう。
 </para>
 <para>
<!--O
   An entry in <filename>/etc/exports</filename> will typically look like this:
-->
 <filename>/etc/exports</filename> のエントリは、
 以下のような形式になっています:
 <programlisting>
 directory machine1(option11,option12) machine2(option21,option22)
</programlisting>
</para>
<para>
<!--O
  where 
-->
  各要素の意味は以下の通りです:
  <glosslist>
  <glossentry><glossterm>directory</glossterm>
  <glossdef>
   <para>
<!--O
    the directory that you want to share.  It may be an 
    entire volume though it need not be.  If you share a directory, 
    then all directories under it within the same file system will 
    be shared as well.
-->
    共有させたいディレクトリです。ボリューム全体でも良いですし、
    そうでなくてもかまいません。あるディレクトリを共有させると、
    それ以下のすべてのディレクトリも
    (同じファイルシステムにある限り) 同様に共有されます。
   </para>
  </glossdef>
 </glossentry>
 <glossentry><glossterm>machine1 and machine2</glossterm>
  <glossdef>
   <para>
<!--O
    client machines that will have access to the directory. The machines
    may be listed by their DNS address or their IP address 
    (e.g., <emphasis>machine.company.com</emphasis> or <emphasis>192.168.0.8</emphasis>).
    Using IP addresses is more reliable and more secure.  If you need to
    use DNS addresses, and they do not seem to be resolving to the right
    machine, see <xref linkend="symptom3">.
-->
    そのディレクトリにアクセスするクライアントマシンです。
    マシンは DNS アドレスまたは IP アドレスで指定できます
    (例: <emphasis>machine.company.com</emphasis> とか
    <emphasis>192.168.0.8</emphasis>)。
    IP アドレスを使うほうがより信頼性が高く安全です。
    DNS アドレスを使う必要があって、
    その際に正しいマシンを発見できない場合には、
    <xref linkend="symptom3"> を見てください。
   </para>
  </glossdef>
 </glossentry>
 <glossentry><glossterm>optionxx</glossterm>
  <glossdef>
   <para>
<!--O
    the option listing for each machine will describe what kind of 
    access that machine will have.  Important options are:
-->
    各マシンのオプションのリストで、
    そのマシンがどのようにアクセスできるかを記述します。
    重要なオプションをいくつか挙げます:
    <itemizedlist>
    <listitem>
      <para>
<!--O
       <userinput>ro</userinput>:  The directory is shared read only; the client machine 
      will not be able to write to it.  This is the default.
-->
       <userinput>ro</userinput>: このディレクトリは読み出し専用で共有されます。
       クライアントは書き込むことはできません。これがデフォルトです。
    </para>
   </listitem>
   <listitem>
     <para>
<!--O
       <userinput>rw</userinput>:  The client machine will have read and write access to the 
      directory.
-->
       <userinput>rw</userinput>: クライアントマシンは読み出しと
       書き込み両方のアクセスをこのディレクトリに行います。
     </para>
   </listitem>
   <listitem>
     <para>
<!--O
       <userinput>no_root_squash</userinput>: By default,
       any file request made by user <computeroutput>root</computeroutput> 
       on the client machine is treated as if it is made by user 
       <computeroutput>nobody</computeroutput> on the
       server.  (Excatly which UID the request is 
       mapped to depends on the UID of user "nobody" on the server,
       not the client.)  If <userinput>no_root_squash</userinput>
       is selected, then 
       root on the client machine will have the same level of access 
       to the files on the system as root on the server.  This 
       can have serious security implications, although it may be 
       necessary if you want to perform any administrative work on 
       the client machine that involves the exported directories.
       You should not specify this option without a good reason.
-->
       <userinput>no_root_squash</userinput>: デフォルトでは、
       <computeroutput>root</computeroutput> ユーザによるファイル要求は、
       すべてサーバ上では
       <computeroutput>nobody</computeroutput>
       ユーザによってなされたものとして扱われます。
       (正確に言うと、要求の UID のマップ先はサーバにおける
       ユーザ "nobody" の UID に依存します。クライアントの
       ものではありません。)
       <userinput>no_root_squash</userinput> を選ぶと、
       クライアントマシンの root は、
       サーバシステムでも root としての同じレベルのアクセスを
       サーバのファイルに行うことになります。
       これはセキュリティに多大な影響を及ぼす可能性がありますが、
       クライアントで行う管理作業にエクスポートされたディレクトリを
       含めたいような場合には、これが必要になるでしょう。
       適切な理由がなければ、このオプションは指定すべきではありません。
     </para>
   </listitem>
   <listitem>
     <para>
<!--O
       <userinput>no_subtree_check</userinput>: If only part of a volume is exported, a
       routine called subtree checking verifies that a file that is 
       requested from the client is in the appropriate part of the 
       volume.  If the entire volume is exported, disabling this check
       will speed up transfers.
-->
       <userinput>no_subtree_check</userinput>:
       ボリュームの一部だけをエクスポートする場合、
       subtree checking と呼ばれるルーチンが、
       クライアントから要求されたファイルが
       そのボリュームの適切な場所にあるかどうかを調べます。
       ボリューム全体をエクスポートする場合は、
       このチェックを無効にしておくと転送が高速になります。
     </para>
   </listitem>
   <listitem>
     <para>
<!--O
       <userinput>sync</userinput>:
       By default, all but the most recent version (version 1.11)
       of the <command>exportfs</command> command will use 
       <userinput>async</userinput> behavior, telling a client 
       machine that a file write is complete - that is, has been written 
       to stable storage - when NFS has finished handing the write over to 
       the filesysytem.  This behavior may cause data corruption if the 
       server reboots, and the <userinput>sync</userinput> option prevents 
       this.  See <xref linkend="sync-async"> for a complete discussion of 
       <userinput>sync</userinput> and <userinput>async</userinput> behavior.
-->
       <userinput>sync</userinput>:
       最新の版 (version 1.11) を除き、
       <command>exportfs</command> コマンドは
       デフォルトでは <userinput>async</userinput> 動作をします。
       つまり、NFS が書き込み処理をファイルシステムに渡した段階で、
       クライアントマシンに書き込みが完了した
       (つまりストレージデバイスへの書き込みが完了した) と伝えます。
       この動作ではサーバがリブートするとデータが壊れる可能性があり、
       <userinput>sync</userinput> を指定すればこれを防げます。
       <userinput>sync</userinput> と <userinput>async</userinput>
       の動作に関する詳細な議論は <xref linkend="sync-async">
       を見てください。
    </para>
   </listitem>
  </itemizedlist>
  </para>
 </glossdef>
</glossentry>
</glosslist>
</para>

<para>
<!--O
  Suppose we have two client machines, <emphasis>slave1</emphasis> and <emphasis>slave2</emphasis>, that have IP
  addresses <emphasis>192.168.0.1</emphasis> and <emphasis>192.168.0.2</emphasis>, respectively.  We wish to share
  our software binaries and home directories with these machines.
  A typical setup for <filename>/etc/exports</filename> might look like this:
-->
  いま 2 台のクライアントマシン、
  <emphasis>slave1</emphasis> と <emphasis>slave2</emphasis> があり、
  それぞれの IP アドレスはそれぞれ
  <emphasis>192.168.0.1</emphasis> と <emphasis>192.168.0.2</emphasis>
  であるとしましょう。
  これらのマシンに、自分たちで作ったソフトウェアバイナリのディレクトリと、
  ホームディレクトリを共有させたいとします。
  このような場合の <filename>/etc/exports</filename> は
  次のようになるでしょう:
 <screen>
  /usr/local   192.168.0.1(ro) 192.168.0.2(ro)
  /home        192.168.0.1(rw) 192.168.0.2(rw)
 </screen>
</para>
<para>
<!--O
  Here we are sharing <filename>/usr/local</filename> read-only to slave1 and slave2, 
  because it probably contains our software and there may not be 
  benefits to allowing slave1 and slave2 to write to it that outweigh 
  security concerns.  On the other hand, home directories need to be 
  exported read-write if users are to save work on them.
-->
  ここでは <filename>/usr/local</filename> の共有は
  slave1 slave2 ともに読み出し専用としています。
  ここには自分たちで開発したソフトウェアが入るので、
  slave1 や slave2 に書き込み権限を与えることに、
  それがもたらすセキュリティ上のリスクを越えるメリットはないでしょうから。
  一方ホームディレクトリは、そこにユーザが作業をセーブするのであれば、
  読み書き可能でエクスポートしなければなりません。
</para>
<para>
<!--O
  If you have a large installation, you may find that you have a bunch 
  of computers all on the same local network that require access to 
  your server.  There are a few ways of simplifying references
  to large numbers of machines.  First, you can give access to a range 
  of machines at once by specifying a network and a netmask.  For 
  example, if you wanted to allow access to all the machines with IP 
  addresses between <emphasis>192.168.0.0</emphasis> and
<emphasis>192.168.0.255</emphasis> then you could have the entries:
-->
  もし大きなシステムを使っている場合には、
  たくさんのコンピュータが同じローカルネットワークにつながっていて、
  それらすべてからサーバへのアクセスを行わせたいかもしれません。
  多くのマシンへの参照を簡単に行うには、いくつかの方法があります。
  最初のものは、ネットワークとネットマスクを用いて、
  アクセスを許すマシンの範囲を指定する方法です。
  例えば
  <emphasis>192.168.0.0</emphasis> から
  <emphasis>192.168.0.255</emphasis> 
  にあるすべてのマシンにアクセスを許すには、
  次のようなエントリを用意します:
 <screen>
  /usr/local 192.168.0.0/255.255.255.0(ro)
  /home      192.168.0.0/255.255.255.0(rw)
 </screen>
</para>
<para>
<!--O
  See the <ulink url="http://www.linuxdoc.org/HOWTO/Networking-Overview-HOWTO.html">Networking-Overview HOWTO</ulink>
  for further information about how netmasks work, and you may also wish to 
  look at the man pages for <filename>init</filename> and <filename>hosts.allow</filename>.
-->
  ネットマスクの詳しい動作原理については
  <ulink url="http://www.linuxdoc.org/HOWTO/Networking-Overview-HOWTO.html">Networking-Overview HOWTO</ulink>
  (JF による<ulink url="http://www.linux.or.jp/JF/JFdocs/Networking-Overview-HOWTO.html">日本語訳</ulink>)
  を見てください。また
  <filename>init</filename> および <filename>hosts.allow</filename>
  の各 man ページも見ておくといいでしょう。
</para>
<para>
<!--O
  Second, you can use NIS netgroups in your entry. To specify a
  netgroup in your exports file, simply prepend the name of the
  netgroup with an "@".  See the <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">NIS HOWTO</ulink>
  for details on how netgroups work. 
-->
  二番目の方法は、エントリに NIS のネットグループを用いるやり方です。
  exports ファイルにネットグループを指定するには、
  ネットグループ名の前に "@" をつければ良いだけです。
  ネットグループの詳しい動作原理については
  <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">NIS HOWTO</ulink>
  (JF による<ulink url="http://www.linux.or.jp/JF/JFdocs/NIS-HOWTO.html">日本語訳</ulink>)
  を見てください。
</para>
<para>
<!--O
  Third, you can use wildcards such as <emphasis>*.foo.com</emphasis> or
 <emphasis>192.168.</emphasis> instead of hostnames.  There were problems
  with wildcard implementation in the 2.2 kernel series that were fixed
  in kernel 2.2.19.
-->
  三番目の方法は、ホスト名の代わりに
  <emphasis>*.foo.com</emphasis> や <emphasis>192.168.</emphasis>
  のようなワイルドカードを使う方法です。2.2 系カーネルには
  ワイルドカードの実装に問題があったのですが、これは
  カーネル 2.2.19 で修正されました。
</para>
<para>
<!--O
  However, you should keep in mind that any of these simplifications
  could cause a security risk if there are machines in your netgroup
  or local network that you do not trust completely.
-->
  しかしこれらの単純化を行うと、ネットグループやローカルネットワークに
  あるすべてのマシンを完全には信頼できていない場合には、
  セキュリティ上のリスクが加わることになります。
</para>
<para>
<!--O
  A few cautions are in order about what cannot (or should not) be
  exported.  First, if a directory is exported, its parent and child
  directories cannot be exported if they are in the same filesystem.
  However, exporting both should not be necessary because listing the
  parent directory in the <filename>/etc/exports</filename> file will cause all underlying
  directories within that file system to be exported.  
-->
  エクスポートできない (あるいはすべきでない) 内容について、
  いくつか順番に注意しておきます。
  まず第一に、あるディレクトリをエクスポートすると、
  その親ディレクトリと子ディレクトリは (同じファイルシステムにある場合は)
  エクスポートできません。しかしこれらをエクスポートする必要はないはずです。
  なぜなら親ディレクトリを <filename>/etc/exports</filename>
  にかけば、同じファイルシステムにある
  それ以下のディレクトリはすべてエクスポートされるからです。
</para>
<para>
<!--O
  Second, it is a poor idea to export a FAT or VFAT (i.e., MS-DOS or 
  Windows 95/98) filesystem with NFS.  FAT is not designed for use on a 
  multi-user machine, and as a result, operations that depend on 
  permissions will not work well.  Moreover, some of the underlying 
  filesystem design is reported to work poorly with NFS's expectations.  
-->
  第二に、FAT や VFAT ファイルシステム (MS-DOS や Windows 95/98 の領域)
  を NFS でエクスポートするのはよい考えではありません。
  FAT はマルチユーザのマシンで利用することを考慮されていませんから、
  権限という概念に基づいた操作が行えません。
  さらに、これらのファイルシステムの下層システムは、設計上の理由から
  NFS の期待通りには動作しないとも報告されています。
</para>
<para>
<!--O
  Third, device or other special files may not export correctly to non-Linux 
  clients.  See <xref linkend="interop"> for details on particular operating systems.
-->
  第三に、デバイスファイルや特殊ファイルは、
  Linux 以外のクライアントには正しくエクスポートされないことがあります。
  各 OS それぞれに関する詳細は <xref linkend="interop"> を見てください。
</para>
</sect3>
<sect3 id="hosts">
<!--O
 <title>/etc/hosts.allow and /etc/hosts.deny</title>
-->
 <title>/etc/hosts.allow と /etc/hosts.deny</title>
 <para>
<!--O
   These two files specify which computers on the network can use 
   services on your machine.  Each line of the file
   contains a single entry listing 
   a service and a set of machines.  When the server gets a request 
   from a machine, it does the following:
-->
   この 2 つのファイルは、
   あなたのマシンのサービスを利用できるのは、
   ネットワーク上のどのコンピュータなのかを指定するものです。
   このファイルの各行は、サービスとマシンの一覧をリストした
   ひとつのエントリになっています。サーバがあるマシンから要求を受けると、
   サーバは次のように動作します:
  <itemizedlist>
  <listitem>
    <para>
<!--O
     It first checks <filename>hosts.allow</filename> to see if the machine 
     matches a description listed in there. If it does, then the machine
     is allowed access.  
-->
     サーバはまず <filename>hosts.allow</filename> を調べて、
     そのマシンがファイル中の記述にマッチするかを見ます。
     マッチした場合は、そのマシンからのアクセスは許可されます。
   </para>
  </listitem>
  <listitem>
   <para>
<!--O
     If the machine does not match an entry in <filename>hosts.allow</filename>, the
     server then checks <filename>hosts.deny</filename> to see if the client matches a 
     listing in there.  If it does then the machine is denied  access.  
-->
     そのマシンが
     <filename>hosts.allow</filename> のエントリにマッチしないときは、
     サーバは次に <filename>hosts.deny</filename> を調べ、
     そのクライアントがこのファイル中のリストにマッチするかを見ます。
     マッチしたら、そのマシンのアクセスは拒否されます。
   </para>
  </listitem>
  <listitem>
   <para>
<!--O
     If the client matches no listings in either file, then it
     is allowed access.
-->
     そのクライアントがどちらのファイルのリストにもマッチしなければ、
     アクセスは許可されます。
   </para>
  </listitem>
  </itemizedlist>
 </para>
 <para>
<!--O
   In addition to controlling access to services 
   handled by <command>inetd</command> (such 
   as telnet and FTP), this file can also control access to NFS
   by restricting connections to the daemons that provide NFS services.
   Restrictions are done on a per-service basis.
-->
   このファイルによるアクセス制御は、<command>inetd</command>
   で扱われるサービス (telnet や FTP など) だけでなく、
   NFS にも適用できます。
   NFS サービスを提供するデーモンへの接続を制限できるのです。
   制限はサービスごとに行えます。
 </para>
 <para>
<!--O
   The first daemon to restrict access to is the portmapper.  This daemon
   essentially just tells requesting clients how to find all the NFS
   services on the system.  Restricting access to the portmapper is the
   best defense against someone breaking into your system through NFS
   because completely unauthorized clients won't know where to find the
   NFS daemons.  However, there are two things to watch out for.  First,
   restricting portmapper isn't enough if the intruder already knows
   for some reason how to find those daemons.  And second, if you are
   running NIS, restricting portmapper will also restrict requests to NIS.
   That should usually be harmless since you usually want
   to restrict NFS and NIS in a similar way, but just be cautioned.
   (Running NIS is generally a good idea if you are running NFS, because
   the client machines need a way of knowing who owns what files on the
   exported volumes.  Of course there are other ways of doing this such
   as syncing password files.  See the <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">NIS HOWTO</ulink> for information on
   setting up NIS.)
-->
   アクセスを制限すべき最初のデーモンはポートマッパ (portmapper) です。
   このデーモンの仕事は、基本的には要求をよこしたクライアントに、
   システム上の様々な NFS サービスへの接続先を伝えることだけです。
   ポートマッパへのアクセス制限は、
   NFS 経由でシステムへ侵入しようとする者に対する最適な防御となります。
   なぜなら全く認証されていないクライアントは、
   どこに NFS デーモンがいるかを知るすべがないからです。
   しかしここで 2 つの点に気をつけなければなりません。
   一つ目は、ポートマッパを制限するだけでは十分ではないということです。
   侵入者はなんらかの理由で、
   これらのデーモンへの接続先を知っているかもしれません。
   二つ目は、NIS を動かしている場合には、ポートマッパを制限すると
   NIS への要求も制限されるということです。
   通常は NFS も NIS も同様に制限したいでしょうから、
   これが問題になることは少ないでしょうが、
   しかし気には留めておいてください。
   (NFS を動作させるなら、 NIS もいっしょに動作させると良いでしょう。
   クライアントマシンには、
   エクスポートされたボリュームにあるファイルの所有者を
   知る方法が必要だからです。
   もちろんパスワードファイルを同期させる方法は他にもありますが。
   NIS の設定については
   <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">NIS HOWTO</ulink>
   (JF による<ulink url="http://www.linux.or.jp/JF/JFdocs/NIS-HOWTO.html">日本語訳</ulink>)
   を見てください。
 </para>
 <para>
<!--O
   In general it is a good idea with NFS (as with most internet services)
   to explicitly deny access to IP addresses that you don't need
   to allow access to.
-->
   一般には、NFS (を含めほとんどのインターネットサービス) への
   アクセスは、許可する必要のない IP アドレスに対しては
   明示的に拒否しておくのが良いでしょう。
</para>
 <para>
<!--O
   The first step in doing this is to add the followng entry to 
   <filename>/etc/hosts.deny</filename>:
-->
   こうするには、まず次のようなエントリを
   <filename>/etc/hosts.deny</filename> に追加します:
 </para>
 <para>
  <screen>
   portmap:ALL
  </screen>
 </para>
 <para>
<!--O
   Starting with <application>nfs-utils</application> 0.2.0, you can be a bit more careful by
   controlling access to individual daemons.  It's a good precaution
   since an intruder will often be able to weasel around the portmapper.
   If you have a newer version of <application>nfs-utils</application>, add entries for each of the
   NFS daemons (see the next section to find out what these daemons are;
   for now just put entries for them in hosts.deny):
-->
   <application>nfs-utils</application> 0.2.0 からは、
   それぞれのデーモンのアクセス制御も行うことができ、
   よりシステムを堅固にできます。
   侵入者はポートマッパを回避できることも多いので、
   この用心をしておくのはよいことです。
   最近版の <application>nfs-utils</application> を用いているのなら、
   NFS 関連のデーモンそれぞれについて
   エントリを一行ずつ追加しておきましょう
   (これらのデーモンがそれぞれ何であるかは次の節を見てください。
   いまは単にこれらのエントリを hosts.deny に加えてください):
 </para>
 <para>
  <screen>
    lockd:ALL
    mountd:ALL
    rquotad:ALL
    statd:ALL
  </screen>
 </para>
 <para> 
<!--O
   Even if you have an older version of <application>nfs-utils</application>, adding these entries
   is at worst harmless (since they will just be ignored) and at best 
   will save you some trouble when you upgrade.  Some sys admins choose
   to put the entry <userinput>ALL:ALL</userinput> in the file <filename>/etc/hosts.deny</filename>, 
   which causes  any service that looks at these files to deny access to all 
   hosts unless it is explicitly allowed.  While this is more secure 
   behavior, it may also get you in trouble when you are installing new 
   services,  you forget you put it there, and you can't figure out for 
   the life of you why they won't work.
-->
   古い版の <application>nfs-utils</application> を使っている場合でも、
   少なくともこれらのエントリを追加して問題が起きることはありません
   (単に無視されます)。そしてアップグレードしたときに、
   システムをトラブルから救ってくれるかもしれないわけです。
   <filename>/etc/hosts.deny</filename> ファイルに
   <userinput>ALL:ALL</userinput> というエントリを追加する方を選ぶ
   システム管理者もいます。こうすると、これらのファイルを参照する
   すべてのサービスは、明示的に許可されたホスト以外からのアクセスを
   すべて拒否します。
   これはとても安全な動作ですが、
   新しいサービスをインストールした際にトラブルの原因となるかもしれません。
   このエントリを置いたことを忘れていると、
   なぜ新しいサービスが動かないのか、
   一生かかってもわからないかもしれません。
 </para>
 <para>
<!--O
   Next, we need to add an entry to <filename>hosts.allow</filename> to give any hosts 
   access that we want to have access.  (If we just leave the above 
   lines in <filename>hosts.deny</filename> then nobody will have access to NFS.)  Entries 
   in <filename>hosts.allow</filename> follow the format
-->
   次にエントリを <filename>hosts.allow</filename> に追加し、
   アクセスを許可するホストを指定します。
   (上記のように <filename>hosts.deny</filename> に追加しただけだと、
   誰も NFS にアクセスできません。)
   <filename>hosts.allow</filename> のエントリは次のような形式です:
  <informalexample>
   <screen>
    service: host [or network/netmask] , host [or network/netmask]
   </screen>
  </informalexample>
 </para>
 <para>
<!--O
   Here, host is IP address of a potential client; it may be possible 
   in some versions to use the DNS name of the host, but it is strongly 
   discouraged.
-->
   ここで host はクライアントになれるホストの IP アドレスです。
   ホストの DNS 名を利用できるシステムもありますが、
   DNS 名の利用は避けるよう強くおすすめします。
 </para>
 <para>
<!--O
   Suppose we have the setup above and we just want to allow access
   to <emphasis>slave1.foo.com</emphasis> and <emphasis>slave2.foo.com</emphasis>, 
   and suppose that the IP addresses of these machines are <emphasis>192.168.0.1</emphasis>
   and <emphasis>192.168.0.2</emphasis>, respectively.  We could add the following entry to 
   <filename>/etc/hosts.allow</filename>:
-->
   以前に行ったような設定で、
   <emphasis>slave1.foo.com</emphasis> と <emphasis>slave2.foo.com</emphasis>
   にアクセスを許可したい場合を考えましょう。
   これらのマシンの IP アドレスをそれぞれ
   <emphasis>192.168.0.1</emphasis> と <emphasis>192.168.0.2</emphasis>
   とします。この場合は次のようなエントリを
   <filename>/etc/hosts.allow</filename> に追加します:
  <informalexample>
   <screen>
   portmap: 192.168.0.1 , 192.168.0.2
   </screen>
  </informalexample>
 </para>
 <para>
<!--O
   For recent nfs-utils versions, we would also add the following
   (again, these entries are harmless even if they are not supported):
-->
   最近の版の nfs-utils では、次の内容も追加しましょう
   (同じくサポートされていなくても無害です):
  <informalexample>
   <screen>
    lockd: 192.168.0.1 , 192.168.0.2
    rquotad: 192.168.0.1 , 192.168.0.2
    mountd: 192.168.0.1 , 192.168.0.2
    statd: 192.168.0.1 , 192.168.0.2
   </screen>
  </informalexample>
 </para>
 <para>
<!--O
   If you intend to run NFS on a large number of machines in a local
   network, <filename>/etc/hosts.allow</filename> also allows for network/netmask style 
   entries in the same manner as <filename>/etc/exports</filename> above.
-->
   NFS をローカルなネットワークにつながった多数のマシンに対して
   動作させる場合は、
   <filename>/etc/hosts.allow</filename> にも「ネットワーク/ネットマスク」
   形式のエントリを指定することもできます。
   やり方は先に <filename>/etc/exports</filename>
   の部分で説明したのと同じです。
 </para>
</sect3>
</sect2>
<sect2 id="servicestart">
<!--O
 <title>Getting the services started</title>
-->
 <title>サービスを開始する</title>
 <sect3 id="prereq">
<!--O
  <title>Pre-requisites</title>
-->
  <title>事前の準備</title>
  <para>
<!--O
    The NFS server should now be configured and we can start it running.
    First, you will need to have the appropriate packages installed.  
    This consists mainly of a new enough kernel and a new enough version
    of the <application>nfs-utils</application> package.  
    See <xref linkend="swprereq"> if you are in doubt.
-->
    これで NFS サーバの設定ができましたので、動作させてみましょう。
    まず、適切なパッケージをインストールしましょう。
    要するに十分新しいカーネルと、十分新しい版の
    <application>nfs-utils</application> パッケージです。
    よく分からなければ <xref linkend="swprereq"> を見ましょう。
  </para>
  <para>
<!--O
    Next, before you can start NFS, you will need to have TCP/IP 
    networking functioning correctly on your machine.  If you can use 
    telnet, FTP, and so on, then chances are your TCP networking is fine.
-->
    続いて、NFS を開始する前に、TCP/IP ネットワークの機能が
    そのマシンで正しく動作しているか確認しましょう。
    telnet, FTP などが使えれば、おそらく TCP ネットワークは
    ちゃんと動いていると思います。
  </para>
  <para>
<!--O
    That said, with most recent Linux distributions you may be able to 
    get NFS up and running simply by rebooting your machine, and the 
    startup scripts should detect that you have set up your <filename>/etc/exports</filename>
    file and will start up NFS correctly.  If you try this, see <xref linkend="verify">
    Verifying that NFS is running.  If this does not work, or if 
    you are not in a position to reboot your machine, then the following
    section will tell you which daemons need to be started in order to 
    run NFS services.  If for some reason <command>nfsd</command> 
    was already running when
    you edited your configuration files above, you will have to flush 
    your configuration; see <xref linkend="later"> for details.
-->
    じつは、最近の Linux ディストリビューションのほとんどでは、
    NFS を起動して動作させるには、マシンをリブートするだけですみます。
    こうすると起動スクリプトは、あなたが <filename>/etc/exports</filename>
    に対して行った設定を検知して、NFS を正しく起動してくれます。
    こちらを試してみるなら、<xref linkend="verify"> を読んで、
    NFS が動作しているかどうか調べてください。
    うまく行かなかった場合や、マシンをリブートできない場合には、
    次の節を読めば NFS サービスに必要なデーモンがどれかわかります。
    なんらかの理由で、先に設定ファイルを編集していた時点で
    <command>nfsd</command> が動作していた場合は、
    行った設定を反映させる必要があります。
    これを行うには <xref linkend="later"> を見てください。
  </para>
 </sect3>
 <sect3 id="portmapper">
<!--O
  <title>Starting the Portmapper</title>
-->
  <title>ポートマッパを起動する</title>
   <para>
<!--O
     NFS depends on the portmapper daemon, either called <command>portmap</command> or 
     <command>rpc.portmap</command>.  It will need to be started first.  It should be 
     located in <filename>/sbin</filename> but is sometimes in <filename>/usr/sbin</filename>.  
     Most recent Linux distributions start this daemon in the boot scripts, but it is 
     worth making sure that it is running before you begin working with 
     NFS (just type <command>ps aux | grep portmap</command>).
-->
     NFS はポートマッパデーモンに依存しています。
     名前は <command>portmap</command> か
     <command>rpc.portmap</command> のどちらかです。
     これは最初に起動しなければなりません。
     おそらく置き場所は <filename>/sbin</filename> でしょうが、
     <filename>/usr/sbin</filename> の場合もあるかもしれません。
     最近の Linux ディストリビューションのほとんどは、
     このデーモンをブートスクリプトから起動しますが、
     NFS に関する作業を始める前には、
     実際に動作しているかを確かめておくと良いでしょう
     (<command>ps aux | grep portmap</command> と入力するだけです)。
   </para>
 </sect3>
 <sect3 id="daemons">
<!--O
  <title>The Daemons</title>
-->
  <title>それぞれのデーモン</title>
   <para>
<!--O
     NFS serving is taken care of by five daemons: <command>rpc.nfsd</command>, 
     which does most of the work; <command>rpc.lockd</command> and 
     <command>rpc.statd</command>, which handle file locking;
     <command>rpc.mountd</command>, which handles the initial mount requests, 
     and <command>rpc.rquotad</command>, which handles user file quotas on 
     exported volumes. Starting with 2.2.18, <command>lockd</command> 
     is called by <command>nfsd</command> upon demand, so you do
     not need to worry about starting it yourself. <command>statd</command> 
     will need to be started separately. Most recent Linux distributions will
     have startup scripts for these daemons.
-->
     NFS のサービスは、5 つのデーモンによって処理されます:
     <command>rpc.nfsd</command> は作業の大部分を行います。
     <command>rpc.lockd</command> と <command>rpc.statd</command>
     はファイルロックを扱います。
     <command>rpc.mountd</command> は接続開始時のマウント要求を扱います。
     <command>rpc.quotad</command> はエクスポートされたボリュームにおける
     ユーザファイルクォータを扱います。
     2.2.18 以降では、<command>lockd</command> は
     <command>nfsd</command> から必要に応じて呼び出されますので、
     手動で起動する必要はありません。
     <command>statd</command> は別に起動しておく必要があります。
     最近の Linux ディストリビューションのほとんどには、
     これらのデーモンの起動スクリプトがあるはずです。
   </para>
   <para>
<!--O
     The daemons are all part of the nfs-utils package, and may be either
     in the <filename>/sbin</filename> directory or the <filename>/usr/sbin</filename> directory.
-->
     これらのデーモンはすべて nfs-utils パッケージに入っており、
     <filename>/sbin</filename> または <filename>/usr/sbin</filename>
     のいずれかのディレクトリにあると思います。
   </para>
   <para>
<!--O
    If your distribution does not include them in the startup scripts, 
    then then you should add them, configured to start in the following 
    order:
-->
    使っているディストリビューションの起動スクリプトにこれらがない場合は、
    次の順に起動するよう設定を追加しなければなりません:
  <simplelist>
  <member><command>rpc.portmap</command></member>
  <member><command>rpc.mountd</command>, <command>rpc.nfsd</command></member>
<!--O
  <member><command>rpc.statd</command>, <command>rpc.lockd</command> (if necessary), and <command>rpc.rquotad</command></member>
-->
  <member><command>rpc.statd</command>,
          <command>rpc.lockd</command> (必要なら),
          <command>rpc.rquotad</command></member>
  </simplelist>
 </para>
 <para>
<!--O
   The nfs-utils package has sample startup scripts for RedHat and
   Debian.  If you are using a different distribution, in general you
   can just copy the RedHat script, but you will probably have to take
   out the line that says:
-->
   nfs-utils パッケージには、RedHat と Debian 向けの起動スクリプトの例が
   入っています。これら以外のディストリビューションを使っている場合でも、
   大抵は RedHat のスクリプトをコピーすればすむと思いますが、
   <screen>
    . ../init.d/functions
   </screen>
<!--O
   to avoid getting error messages.
-->
   という行を削除しないとエラーメッセージが表示されるかもしれません。
 </para>
</sect3>
</sect2>
<sect2 id="verify">
<!--O
 <title>Verifying that NFS is running</title>
-->
 <title>NFS が動作しているか確認する</title>
  <para>
<!--O
    To do this, query the portmapper with the command <command>rpcinfo -p</command> to 
    find out what services it is providing.  You should get something 
    like this:
-->
    これを行うには、
    <command>rpcinfo -p</command> コマンドを用いてポートマッパに問い合わせ、
    どんなサービスが提供されているかを調べます。
    次のような出力が得られるはずです。
   <screen>
    program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp    749  rquotad
    100011    2   udp    749  rquotad
    100005    1   udp    759  mountd
    100005    1   tcp    761  mountd
    100005    2   udp    764  mountd
    100005    2   tcp    766  mountd
    100005    3   udp    769  mountd
    100005    3   tcp    771  mountd
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    300019    1   tcp    830  amd
    300019    1   udp    831  amd
    100024    1   udp    944  status
    100024    1   tcp    946  status
    100021    1   udp   1042  nlockmgr
    100021    3   udp   1042  nlockmgr
    100021    4   udp   1042  nlockmgr
    100021    1   tcp   1629  nlockmgr
    100021    3   tcp   1629  nlockmgr
    100021    4   tcp   1629  nlockmgr
  </screen>
 </para>
 <para>
<!--O
   This says that we have NFS versions 2 and 3, rpc.statd version 1, 
   network lock manager (the service name for rpc.lockd) versions 1, 3, 
   and 4.  There are also different service listings depending on 
   whether NFS is travelling over TCP or UDP.  Linux systems use UDP
   by default unless TCP is explicitly requested; however other OSes 
   such as Solaris default to TCP.
-->
   ここでは NFS version 2 と 3、rpc.statd version 1、
   network lock manager (rpc.lockd のサービス名) version 1, 3, 4
   があります。また NFS が TCP を使うか UDP を使うかによって、
   別々のサービスとしてリストされています。
   Linux システムは、特に TCP を使うべく指定されない限り、
   UDP をデフォルトで用います。しかし Solaris のような他の OS では、
   デフォルトは TCP になっています。
 </para>
 <para>
<!--O
   If you do not at least see a line that says 
   <computeroutput>portmapper</computeroutput>, a line that says 
   <computeroutput>nfs</computeroutput>, and a line that says 
   <computeroutput>mountd</computeroutput> then you will need 
   to backtrack and try again to start up the daemons 
   (see <xref linkend="troubleshooting">, 
   Troubleshooting, if this still doesn't work).
-->
   もし <computeroutput>portmapper</computeroutput> の行、
   <computeroutput>nfs</computeroutput> の行、
   <computeroutput>mountd</computeroutput> の行のどれかがなければ、
   戻ってデーモンを起動しなおす必要があります
   (もしそれでも動かなければ、<xref linkend="troubleshooting">
   トラブルシュートを見てください)。
 </para>
 <para>
<!--O
   If you do see these services listed, then you should be ready to 
   set up NFS clients to access files from your server.
-->
   これらのサービスが表示されていたら、NFS クライアントを用意して、
   サーバのファイルにアクセスさせるための準備が整ったことになります。
 </para>
</sect2>
<sect2 id="later">
<!--O
 <title>Making changes to /etc/exports later on</title>
-->
 <title>/etc/exports をあとから変更する</title>
 <para>
<!--O
   If you come back and change your <filename>/etc/exports</filename> file, the changes you 
   make may not take effect immediately.  You should run the command 
   <command>exportfs -ra</command> to force <command>nfsd</command> to re-read the <filename>/etc/exports</filename>
  file.  If you can't find the <command>exportfs</command> command, then you can kill <command>nfsd</command> with the 
  <userinput> -HUP</userinput> flag (see the man pages for kill for details).
-->
  先ほどやった
  <filename>/etc/exports</filename> ファイルの変更を再び行なった場合、
  その変更はすぐには反映されません。<command>nfsd</command> に
  <filename>/etc/exports</filename> ファイルを読み直させるには、
  <command>exportfs -ra</command> コマンドを実行しなければなりません。
　<command>exportfs</command> コマンドが見つからない場合は、
  <userinput>-HUP</userinput> フラグを指定して
  <command>nfsd</command> を kill します
  (詳細は kill の man ページを見てください)。
 </para>
 <para>
<!--O
   If that still doesn't work, don't forget to check <filename>hosts.allow</filename> to 
   make sure you haven't forgotten to list any new client machines 
   there.  Also check the host listings on any firewalls you may have 
   set up (see <xref linkend="troubleshooting"> and 
   <xref linkend="security"> for more details on firewalls and NFS).
-->
   これでもうまくいかない場合は、
   <filename>hosts.allow</filename> を調べ、
   新しいクライアントマシンをリストし忘れていないか確認してください。
   またファイアウォールを設定している場合は、
   そのホストリストもチェックしてください
   (ファイアウォールと NFS の関係については
   <xref linkend="troubleshooting"> と
   <xref linkend="security"> とを見てください)。
 </para>
</sect2>
</sect1>
