next up previous contents
Next: 4.2.1.3 shareの取消 Up: 4.2.1 サーバ側の設定 Previous: 4.2.1.1 関連するプロセス

4.2.1.2 shareコマンド

NFSサーバの側では、自分のシステムが備えているローカルなファイルシステムを 他のシステムに対して公開するための設定を行なうことになります。 このことをファイルシステムのエクスポート、あるいはシェアと言います。 そして、このために使用されるコマンドが、BSD系の場合はexportfs、 System V系の場合はshare(/usr/sbin/share)ということになります。 本講座では使用するOSはSolaris2.5を想定しますので、 shareコマンドの利用法について述べます。

shareコマンドのシンタックス

share [ -F ファイルシステムタイプ ]  [ -o ファイルシステム固有オプション ]
[ -d コメント ] [ 公開するディレクトリ ]

「ファイルシステムタイプ」は指定しなければNFSのことになります。 実際、NFS以外はこのコマンドを使用する意味はありませんから、 このオプション自体指定することはほとんどないでしょう。

「ファイルシステム固有オプション」は、したがって事実上NFSで有効な オプションのことになります。 Solaris2.5で有効なオプションには以下のようなものがあり、 これらをコンマで区切って指定します。 他のUNIXでこれらのオプションがすべて有効とは限りません。

rw
このディレクトリをクライアントから読み書き可能に設定します。 何も指定がない場合、このオプションが設定されているものとみなされます。
rw=クライアント1[:クライアント2
...] 指定されたクライアントに 対してのみ、読み書き可能でこのディレクトリを公開します。
ro
このディレクトリを読み取り専用で公開します。
ro=クライアント1[:クライアント2
...] 指定されたクライアントに 対してのみ、読み取り専用でこのディレクトリを公開します。
anon=ユーザID
認証されないユーザ(後述)がこのサーバのファイルシステムに アクセスした場合、ここで指定したユーザIDを持つものとして扱われます。 このユーザIDを-1に設定すると、認証されないユーザのアクセスは拒否されます。
root=クライアント1[:クライアント2
...] 指定したクライアントからの rootによるディレクトリへのアクセスを許可します。 これを指定しない場合のrootの扱いは以下を見て下さい。
secure
クライアントの認証に、RPCのAUTH_DES認証方式を使用します。 認証されなかったユーザは、上記のanon=で指定されたUIDを持つものとして扱われます。
kerberos
クライアントの認証に、RPCのAUTH_KERB認証方式を使用します。 認証されなかったユーザは、上記のanon=で指定されたUIDを持つものとして扱われます。 なお、secure、kerberosのオプションを指定しない場合、クライアントの認証は AUTH_UNIX認証方式で行なわれます。 つまり、基本的にUIDとGIDに基づいてアクセスが許可されますが、 rootは上記のanon=で指定されたUIDを持つものとして扱われます。
nosuid
クライアント側からのSUID、SGIDビットの設定を無効にします。
aclok
NFSバージョン2のクライアント(Solaris2.4以前)に対する アクセスコントロールを有効にします。指定しないほうが良いでしょう。

ディレクトリ名を指定せずにshareコマンドを使用した場合、現在このサーバで shareされているファイルシステムに関する情報が表示されます。 このとき上の「コメント」も表示されます。

shareコマンドを使用する場合、気をつけなければいけないのは、 公開したいディレクトリが複数のローカルファイルシステムにまたがっている場合、 そのファイルシステムごとにshareを行なわなければいけないという点です。 例えば、あるマシン上で、/usr が /dev/dsk/c0t3d0s6 というデバイス上、 /usr/wwwというディレクトリが /dev/dsk/c0t2d0s5 というデバイス上にある場合 (これらはどちらもSCSIハードディスクのあるスライスを表します: 詳細は付録を参照して下さい)、もし/usr以下を/usr/wwwも含めてshareしたければ、 /usrだけを share /usr としたのでは不十分で、 これと合わせて share /usr/www も実行する必要があるということです。

逆に、単一のファイルシステムの中で、あるディレクトリがすでにshareされた状態で、 そのサブディレクトリをさらにshareすることはできません。 つまり、/usrを読み書き可能、/usr/texを読み取り専用でshareというようなことは、 両者が同一のファイルシステムにある場合はできません。 ただファイルシステムの全てのディレクトリごとに shareを行うことはできます(例えば/usr/local, /usr/texというように)。 しかし、その場合1つディレクトリが増えるごとにshareをかけ直さなければならず 管理が面倒になると思われます。それぞれのケースで最適な方法を選んで下さい。



Noriyo Kanayama