Oracle® Solaris 11.2 でのネットワークファイルシステムの管理

印刷ビューの終了

更新: 2014 年 7 月
 
 

share コマンド

share コマンドは、NFS サーバー上のローカルファイルシステムをマウント可能にするために使用します。share コマンドを使用して、システム上のファイルシステムのうち、現在共有されているもののリストを表示することもできます。share コマンドが機能するには、NFS サーバーが動作して必要があります。

すべてのディレクトリツリーは共有できるオブジェクトです。ただし、各ファイルシステムの階層構造は、そのファイルシステムが位置するディスクスライスやパーティションで制限されます。

すでに共有している大規模なファイルシステムの一部であるファイルシステムを共有することはできません。たとえば、/usr および /usr/local が 1 つのディスクスライス上にある場合は、/usr を共有したり /usr/local を共有したりできます。ただし、異なる共有オプションを指定してこれら両方のディレクトリを共有するには、/usr/local を別のディスクスライスに移動する必要があります。

読み取り専用で共有されているファイルシステムへのアクセスを、読み書きで共有されているファイルシステムのファイルハンドル経由で取得できます。ただし、両方のファイルシステムが同じディスクスライスにある必要があります。より安全な状況を作成するには、読み書きである必要があるファイルシステムを、読み取り専用として共有されているファイルシステムとは別のパーティションまたは別のディスクスライスに配置してください。


注 -  ファイルシステムが共有解除されてから再共有されるとき、NFS Version 4 がどのように機能するかについては、NFS version 4 におけるファイルシステムの共有解除と再共有を参照してください。

share オプション

–o フラグと一緒に含めることができるオプションの一部を次に示します。

rw|ro

pathname ファイルシステムが、すべてのクライアントに読み書きまたは読み取り専用で共有されます。

rw=access-list

ファイルシステムが、リストされたクライアントにのみ読み書きで共有されます。それ以外の要求は拒否されます。詳細については、share コマンドによるアクセスリストの設定を参照してください。このオプションは –ro オプションをオーバーライドします。

NFS 固有 share オプション

NFS ファイルシステムで使用できるオプションには次が含まれます。

aclok

このオプションによって、NFS Version 2 プロトコルをサポートする NFS サーバーが NFS Version 2 クライアントのアクセス制御を行うように構成できます。このオプションを指定しないと、すべてのクライアントは最小限のアクセスしかできません。指定すると、最大限のアクセスができるようになります。たとえば –aclok オプションを指定して共有したファイルシステムでは、1 人のユーザーが読み取り権を持っていれば全員が読み取りを許可されます。このオプションを指定しないと、アクセス権を持つべきクライアントからのアクセスが拒否される可能性があります。ユーザーに与えるアクセス権は、既存のセキュリティーシステムによって決定します。アクセス制御リスト (ACL) の詳細は、Oracle Solaris 11.2 でのファイルのセキュリティー保護とファイル整合性の検証 のアクセス制御リストによる UFS ファイルの保護を参照してください。


注 -  ACL を使用するには、クライアントとサーバーが NFS Version 3 および NFS_ACL プロトコルをサポートするソフトウェアを実行していることを確認してください。ソフトウェアが NFS Version 3 プロトコルのみをサポートする場合でも、クライアントは正しいアクセスを取得できますが、ACL を操作できません。NFS_ACL プロトコルをサポートしていれば、正しいアクセス権を取得した上で ACL の操作も可能です。
anon=uid

anon は、認証されていないユーザーのユーザー ID を選択するために使用します。anon-1 に設定すると、サーバーは認証されていないユーザーへのアクセスを拒否します。anon=0 を設定して root アクセスを付与することで、認証されていないユーザーに root アクセスを付与できるため、代わりに root オプションを使用してください。

index=filename

–index=filename オプションによって、ユーザーが NFS URL にアクセスするときに、ディレクトリのリストが表示される代わりに、HTML ファイルが強制的にロードされます。これは、HTTP URL がアクセスしているディレクトリに index.html ファイルが見つかるとブラウザのような動作をするというものです。このオプションを設定することは、httpd に対して DirectoryIndex オプションを指定するのと同じ意味です。たとえば、share コマンドが次を報告するとします。

export_web /export/web   nfs sec=sys,public,index=index.html,ro

このとき、次の URL によって表示される情報はすべて同じです。

nfs://server/dir
nfs://server/dir/index.html
nfs://server//export/web/dir
nfs://server//export/web/dir/index.html
http://server/dir
http://server/dir/index.html
log=tag

このオプションによって、/etc/nfs/nfslog.conf 内に、ファイルシステム用の NFS サーバーロギング構成情報を含むタグを指定します。NFS サーバーログ機能を使用可能にするにはこのオプションを選択する必要があります。

nosuid

このオプションによって、setuid または setgid モードを有効にするすべての試行が無視されるべきであることを示します。NFS クライアントは、setuid または setgid ビットがオンのファイルを作成できません。

public

–public オプションは、WebNFS ブラウズのために追加されました。このオプションで共有できるのは、1 台のサーバーにつき 1 つのファイルシステムだけです。

–root=access-list

サーバーがリスト内のホストに root アクセスを付与します。デフォルトでは、サーバーはどのリモートホストにもルートアクセス権は与えません。選択されているセキュリティーモードが –sec=sys 以外のものである場合は、リストにクライアントホスト名のみを含めることができます。詳細については、share コマンドによるアクセスリストの設定を参照してください。


Caution

注意  -  ほかのホストに root アクセスを付与することは、さまざまなセキュリティー上の影響があります。–root= オプションは十分慎重に使用してください。


–root=client-name

client-name 値は、AUTH_SYS 認証で、exportfs(1B) で提供されるアドレスのリストに基づいてクライアントの IP アドレスをチェックするために使用されます。一致が見つかった場合、共有されているファイルシステムに root アクセスが付与されます。

–root=hostname

AUTH_SYSRPCSEC_GSS などのセキュア NFS モードの場合、サーバーは、アクセスリストから派生したホストベース主体名のリストに基づいてクライアントの主体名をチェックします。クライアントの主体名の汎用構文は root@hostname です。Kerberos V の場合、構文は root/hostname.fully.qualified@REALM です。host-name 値を使用するときは、アクセスリスト上のクライアントは主体名用の資格を持っている必要があります。Kerberos V の場合、クライアントはその root/hostname.fully.qualified@REALM 主体名用の有効な keytab エントリを持っている必要があります。詳細は、Oracle Solaris 11.2 での Kerberos およびその他の認証サービスの管理 のKerberos クライアントの構成を参照してください。

–sec=mode[:mode]

このオプションによって、ファイルシステムへのアクセスを取得するために必要なセキュリティーモードを設定します。デフォルトのセキュリティーモードは、UNIX の認証です。モードは複数指定できますが、コマンド行に指定するときは 1 行につき 1 つのセキュリティーモードだけにしてください。各 –sec= オプションは、別の –sec= が検出されるまで、後続の –rw–ro–rw=– ro=–root=、および –window= オプションに適用されます。–sec=none とすると、すべてのユーザーがユーザー nobody にマップされます。

window=value

value は、NFS サーバーで資格が有効な時間の上限です。デフォルトは 30000 秒 (8.3 時間) です。

share コマンドによるアクセスリストの設定

share コマンドで提供するアクセスリストには、ドメイン名、サブネット番号、およびアクセスを拒否するエントリ、さらに標準の –ro=–rw=、または –root= オプションを含めることができます。この拡張により、名前空間を変更したり多数のクライアントを定義したリストを使用することなく、ファイルアクセス制御を単一のサーバーで簡単に管理できます。

次の例は、ほとんどのシステムに読み取り専用アクセスを提供しますが、roselilac には読み書きアクセスを許可します。

# share -F nfs -o ro,rw=rose:lilac /usr/src

次の例では、eng ネットグループ内のホストに読み取り専用アクセスを割り当てます。rose クライアントでは、読み取りと書き込みの両方ができます。

# share -F nfs -o ro=eng,rw=rose /usr/src

注 -  引数なしで rwro の両方を指定できません。読み書き可能オプションを指定しないと、デフォルトによってすべてのクライアントが読み書き可能になります。

複数のクライアントが 1 つのファイルシステムを共有するには、同じ行にすべてのオプションを入力する必要があります。同じオブジェクトに対して share コマンドの複数呼び出しを発行する場合、最後に実行されるコマンドだけが適用されます。次の例では、3 つのクライアントシステムで読み書きアクセスが有効になりますが、rosetulip だけにはファイルシステムへのアクセスが root として付与されます。

# share -F nfs -o rw=rose:lilac:tulip,root=rose:tulip /usr/src

複数の認証メカニズムを使用するファイルシステムを共有するときは、正しいセキュリティーモードのあとに –ro–ro=–rw–rw=–root、および –window オプションを含めていることを確認してください。この例では、eng というネットグループ内のすべてのホストに対して UNIX 認証が選択されています。これらのホストは、ファイルシステムを読み取り専用モードでのみマウントできます。ホスト tuliplilac は、これらのホストが Diffie-Hellman 認証を使用する場合にファイルシステムを読み書きでマウントできます。これらのオプションでは、tulip および lilac は、これらのホストが DH 認証を使用していない場合でも、ファイルシステムを読み取り専用でマウントできます。ただし、ホスト名が eng ネットグループに含まれている必要があります。

# share -F nfs -o sec=dh,rw=tulip:lilac,sec=sys,ro=eng /usr/src

デフォルトのセキュリティーモードは UNIX 認証ですが、–sec オプションを使用している場合、この UNIX 認証は含まれなくなります。そのため、UNIX 認証をほかの認証メカニズムとともに使用する場合は、–sec=sys オプションを指定する必要があります。

実際のドメイン名の前にドットを付けると、アクセスリスト中で DNS ドメイン名を使用できます。ドットの後の文字列はドメイン名です。完全指定のホスト名ではありません。次の例では、eng.example.com ドメイン内のすべてのホストにマウントアクセスを許可します。

# share -F nfs -o ro=.:.eng.example.com /export/share/man

この例では、単一ドットは NIS 名前空間で照合されたすべてのホストに一致します。ネームサービスから返される結果にはドメイン名は含まれません。.eng.example.com エントリは、名前空間解決に DNS を使用するすべてのホストに一致します。DNS は常に完全修飾ホスト名を返すため、DNS とほかの名前空間を組み合わせを使用する場合は長いエントリが必要です。

実際のネットワーク番号またはネットワーク名とアットマーク (@) を後置することで、アクセスリスト内でサブネット番号を使用できます。この文字は、ネットワーク名をネットグループ名や完全指定のホスト名と区別するためです。サブネットは、/etc/networks 内または NIS 名前空間内で識別する必要があります。次のエントリは、サブネット 192.168eng ネットワークと識別されている場合、すべて同じ意味を持ちます。

# share -F nfs -o ro=@eng /export/share/man
# share -F nfs -o ro=@192.168 /export/share/man
# share -F nfs -o ro=@192.168.0.0 /export/share/man

2 番目と 3 番目のエントリは、ネットワークアドレス全体を指定する必要がないことを表しています。

ネットワークアドレスの先頭部分がバイトによる区切りでなく、CIDR (Classless Inter-Domain Routing) のようになっている場合には、マスクの長さをコマンド行で具体的に指定できます。この長さは、ネットワーク名かネットワーク番号の後ろにスラッシュで区切ってアドレスの接頭辞に有効ビット数として指定します。次に例を示します。

# share -f nfs -o ro=@eng/17 /export/share/man
# share -F nfs -o ro=@192.168.0/17 /export/share/man

この例で、「/17」はアドレスの先頭から 17 ビットがマスクとして使用されることを表します。CIDR についての追加情報は、RFC 1519 を参照してください。

また、エントリの前に「-」を指定することでアクセスの拒否を示すこともできます。エントリは左から右に読み込まれるため、アクセス拒否のエントリは次のようにそのエントリを適用するエントリの前に置く必要があることに注意してください。

# share -F nfs -o ro=-rose:.eng.example.com /export/share/man

この例では、eng.example.com ドメイン内のホストにアクセスを許可します (rose という名前のホストを除く)。