Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2022年7月27日
 
 

share_nfs(8)

名前

share_nfs - NFS 共有をリモートシステムによるマウントに使用可能にする

形式

share -F nfs [-a [-o 
specific_options] [-d description]
     pathname [sharename] | [-A]]
zfs set share.nfs=on | off filesystem|share
zfs share -o share.nfs=on | off specific_options

     filesystem|filesystem%share

説明

share ユーティリティーは、NFS 共有を定義して公開します。これにより、リモートシステムによるマウントに使用可能なローカルファイルシステムが作成されます。これは、nfsd(8) および mountd(8) デーモンがまだ実行されていない場合、これらのデーモンを起動します。

ZFS ファイルシステム共有を作成して公開するために share コマンドを使用できますが、これはレガシー操作と見なされます。share.nfs プロパティーを設定するか zfs share コマンドを使用して、NFS 共有を作成および公開する方法については、zfs(8) を参照してください。

オプション

サポートしているオプションは、次のとおりです。

–F nfs

NFS ファイル共有プロトコルを指定します。

–a

定義されているすべての共有を公開します。

–o specific_options

specific_options を、NFS プロトコルによって解釈されるキーワードと属性値表明のコンマ区切りリストで指定します。特定のオプションによってデフォルトアクセスがオーバーライドされないかぎり、デフォルトでは、共有はすべてのクライアントに読み取り/書き込みアクセス権で公開されます。specific_options には、次の任意の組み合わせを指定できます。

aclok

NFS サーバーが NFS Version 2 クライアントに対するアクセス制御を実行できるようにします。サーバー上で aclok が設定されている場合は、すべてのクライアントに最大のアクセス権が与えられます。たとえば、aclok が設定されていると、だれかが読み取り権を持っている場合、すべてのユーザーに読み取り権が与えられます。aclok が設定されていない場合は、すべてのクライアントに最小アクセス権が与えられます。

anon=uid

uid を、認識されていないユーザーの実効ユーザー ID として設定します。デフォルトでは、認識されていないユーザーには実効ユーザー ID UID_NOBODY が与えられます。

uid を -1 に設定した場合に NFSv3 を使用すると、不明なユーザーはアクセスを拒否されます。すべての NFSv4 マウントの試行も拒否されます。

charset

すべてのクライアントが指定された文字セット (次の説明にあるリストを参照) を使用していると見なされ、ファイル名とパス名がサーバーの UTF-8 に変換されます。

charset=access_list

ここで、charset は、cp932euc-cneuc-jpeuc-jpmseuc-kreuc-twiso8859-1iso8859-2iso8859-5iso8859-6iso8859-7iso8859-8iso8859-9iso8859-13iso8859-15koi8-rshift_jis のいずれかです。

これらのプロパティーのいずれかの access_list に一致するクライアントがその文字セットを使用していると見なされ、ファイル名とパス名がサーバーの UTF-8 に変換されます。

index=file

ディレクトリが NFS URL によって参照されるときに、このファイルを含むディレクトリの一覧ではなく file をロードします。

labeled

デフォルトでは、NFS クライアントはラベルなしファイルのみを使用できます。このオプションを有効にした場合、ラベルがユーザーの認可上限を超えないファイルとディレクトリにアクセスを付与できます。ユーザーの認可上限は、NFS クライアントの識別子をローカル識別子にマップしたあとで、NFS サーバーのネームサービスから取得されます。このオプションでは、サービス svc:/network/nfs/mapid が有効になっている必要があります。

log[=tag]

指定されたファイルシステムに対する NFS サーバーのロギングを有効にします。省略可能なタグによって、関連するログファイルの場所が指定されます。tag は、/etc/nfs/nfslog.conf で定義されます。tag が指定されていない場合は、/etc/nfs/nfslog.conf 内のグローバルな tag に関連付けられたデフォルト値が使用されます。NFS サーバーのロギングのサポートは、NFS Version 2 および Version 3 要求でのみ使用できます。

noaclfab

NFS サーバーが NFS クライアントに加工された ACL を返さないことを許可します。NFS サーバーのデフォルトの動作では ACL を加工します。noaclfab が設定されている場合、NFS サーバーは ACL を加工しません。基礎となるファイルシステムで POSIX ドラフト ACL がサポートされていない場合は、これが適切な選択になります。

none

すべてのクライアントがアクセスを禁止されます。ro または rw オプションは none をオーバーライドできます。

none=access_list

アクセスリストに一致するすべてのクライアントがアクセスを禁止されます。アクセスリストがアスタリスク (*) である場合は例外です。この場合、ro または rwnone をオーバーライドできます。

nosub

クライアントが共有ディレクトリのサブディレクトリをマウントできないようにします。たとえば、サーバー fooey 上で nosub オプションを使用して /export が共有されている場合、NFS クライアントは次を実行できません。

mount -F nfs fooey:/export/home/mnt

NFS Version 4 では MOUNT プロトコルが使用されません。 nosub オプションは、NFS Version 2 および Version 3 要求にのみ適用されます。

nosuid

デフォルトでは、クライアントは、setuid または setgid モードが有効になっている共有ファイルシステム上でのファイルの作成を許可されます。nosuid を指定すると、サーバーファイルシステムは、setuid または setgid モードビットを有効にしようとするすべての試みを暗黙のうちに無視します。

public

公開ファイルハンドルの場所を root (/) から WebNFS に対応したブラウザやクライアントのエクスポートされたディレクトリに移動します。このオプションによって WebNFS サービスが有効になるわけではありません。WebNFS は常に有効です。このオプションを使用できるのは、サーバーあたり 1 つのファイルシステムだけです。ほかのすべてのオプション (–ro=list および –rw=list オプションを含む) を public オプションとともに含めることができます。

ro

共有は、すべてのクライアントに読み取り専用アクセス権で公開されます。

ro=access_list

共有は、access_list に示されているクライアントに読み取り専用アクセス権で公開されます。指定されたクライアントに対する rw サブオプションをオーバーライドします。クライアントが rw=access_list 内の access_list のメンバーとも一致する場合、そのクライアントは読み取りアクセス権と書き込みアクセス権で公開されます。下の access_list を参照してください。

root

すべてのホストの root ユーザーにルートアクセスが許可されます。

root=access_list

access_list で指定されたホストの root ユーザーだけにルートアクセスが許可されます。下の access_list を参照してください。デフォルトでは、どのホストでもルートアクセスが許可されないため、root ユーザーは匿名ユーザー ID にマップされます (上で説明した anon=uid オプションを参照)。共有されるファイルシステムが UNIX 認証 (AUTH_SYS) を使用している場合は、ネットグループを使用できます。

root_mapping=uid

ルートアクセスが許可されているクライアントについて、ルート UID を指定されたユーザー ID にマップします。

rw

共有は、すべてのクライアントに読み取り/書き込みアクセス権で公開されます。

rw=access_list

共有は、access_list に示されているクライアントに読み取り/書き込みアクセス権で公開されます。指定されたクライアントに対する ro サブオプションをオーバーライドします。下の access_list を参照してください。

sec=mode[ :mode]. . .

指定された 1 つ以上のセキュリティーモードを使用して共有を公開します。sec= mode オプションの mode は、そのクライアント上でサポートされているノード名である必要があります。sec= オプションが指定されていない場合に使用されるデフォルトのセキュリティーモードは AUTH_SYS です。コマンド行で複数の sec= オプションを指定できますが、各モードを 1 回しか指定できません。セキュリティーモードは、nfssec(7) で定義されます。

sec= オプションは、別の sec= オプションの前に指定される以降のすべての rw、ro、rw=、ro=、および root= オプションに適用されるモードを指定します。追加のモードとしてより多くの rwrorw=ro=、および root= オプションを指定できるように、sec= が追加されるたびにセキュリティーモードのコンテキストがリセットされます。

sec=none

クライアントが AUTH_NONE を使用しているときにオプション sec=none が指定された場合、またはクライアントがファイルシステムの共有に使用されているものとは異なるセキュリティーモードを使用している場合、各 NFS 要求の資格は認証されていないとして処理されます。認証されていない要求の処理方法については、anon=uid オプションを参照してください。

–d description

共有されるファイルシステムを説明したコメントを指定します。

–A

定義されているすべての共有を表示します。

access_list

access_list 引数は、すべてのホストを表す文字列「 *」か、または各コンポーネントに次の要素を任意の数含めることができるコロンで区切られたリストのどちらかです。

ホスト名

ホストの名前。nsswitchhosts エントリに DNS または LDAP のネーミングが構成されているサーバーでは、ホスト名はすべて、完全修飾 DNS または LDAP 名として表される必要があります。指定されたホスト名はこのホストの正規名である必要があり、かつ NFS クライアントの受信 IP アドレスの逆検索で返されるホスト名に一致している必要があります。

netgroup

ネットグループには複数のホスト名が含まれています。nsswitch hosts エントリに DNS または LDAP のネーミングが構成されているサーバーでは、ネットグループ内のホスト名はすべて、完全修飾 DNS または LDAP 名として表される必要があります。

If the explicit_netgroups setting is enabled, netgroup entries in share access lists must be prefixed with the '%' character to distinguish them from hostnames.See nfs(5) for a description of the explicit_netgroups setting.

domain name suffix

ドメインメンバーシップを使用するには、サーバーは DNS または LDAP を使用して、ホスト名を IP アドレスに解決する必要があります。つまり、DNS と LDAP だけがホストの完全なドメイン名を返すため、/etc/nsswitch.conf 内の hosts エントリでは nis の前に dns または ldap を指定する必要があります。NIS などのほかのネームサービスは、IP アドレスのホスト名へのマッピング時にドメイン情報を返さないため、サーバー上のホスト名の解決には使用できません。たとえば、

NIS   172.16.45.9 --> "myhost"

and:

DNS or LDAP   172.16.45.9 --> 
     "myhost.mydomain.example.com"

ドメイン名接尾辞は、接頭辞として付けられたドットによってホスト名やネットグループと区別されます。たとえば、

rw=.mydomain.example.com

1 つのドットを使用すると、接尾辞のないホスト名に一致させることができます。たとえば、

rw=.

matches mydomain but not mydomain.example.com .この機能を使用すると、DN や LDAP ではなく、NIS を使用して解決されたホストに一致させることができます。

network

ネットワークまたはサブネットコンポーネントの前にアットマーク記号 (@) が付けられます。名前、IPv4 または IPv6 アドレスを指定できます。名前の場合は、getnetbyname(3C) によってアドレスに変換されます。たとえば、

=@mynet

は次と同等です。

=@172.16 または =@172.16.0.0

IPv4 アドレスの場合、ネットワーク接頭辞は、アドレスの下位部分にある 0 番目のオクテットから上位のオクテットまでから決定されたオクテット型のネットマスクを前提にしています (1 つの IP アドレスを指定する場合。下を参照)。ネットワーク接頭辞がバイト型でない場合、この構文では、スラッシュ (/) の区切り記号のあとにマスク長を明示的に指定できます。たとえば、

=@theothernet/17 または =@172.16.132/22

ここで、マスクは、対応する IP アドレス内の左端の隣接する上位ビットの数です。

IPv6 アドレスの場合、アドレスは角括弧で囲む必要があります。そうしないと、IPv6 の最初のコロンがアドレス間の区切り文字と解釈されることがあります。ネットワークマスクの長さは、スラッシュ (/) 区切り文字の後に明示的に指定されます。たとえば、

=@[fe80::/10]

ここで、マスクは、対応する IP ネットワークアドレス内の左端の隣接する上位ビットの数です。

個々の IP アドレスを指定する場合は、上で説明したのと同じ @ 表記をネットマスクの指定なしで使用します。例:

=@172.16.132.14

複数の個々の IP アドレスは、たとえば、次のように指定されます。

root=@172.16.132.20:@[fe80::209:3dff:fe00:c074]

接頭辞として付けられたマイナス記号 (-) は、access_list のそのコンポーネントへのアクセスを拒否します。このリストは、アクセスを許可または拒否する一致が見つかるまで、またはリストの最後に達するまで順番に検索されます。たとえば、ホスト terraengineering ネットグループに含まれている場合、

rw=-terra:engineering

では terra へのアクセスが拒否されますが、

rw=engineering:-terra

では terra へのアクセスが許可されます。

オペランド

次のオペランドがサポートされています。

pathname

共有されるファイルシステムのパス名。

使用例 1 NFS 共有の定義および公開

次の例は、レガシーの share コマンドを使用して、/export/manuals ファイルシステム共有を定義して公開する方法を示しています。

# share -F NFS /export/manuals

次の例では、zfs set コマンドを使用して ZFS ファイルシステムを共有する方法を示しています。

# zfs set share.nfs=on tank/data

次の例では、share.nfs.public オプションを使用して、名前付き NFS 共有 tank/public%pubshare を作成する方法を示しています。このプロパティーは継承可能でないため、ZFS ファイルシステム tank/public には設定しません。

# zfs create -o mountpoint=/pub tank/public
# zfs share -o share.nfs=on -o share.nfs.public=on tank/public%pubshare

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

>0

エラーが発生しました。

ファイル

/etc/dfs/fstypes

システムタイプのリスト (デフォルトでは NFS)

/etc/dfs/sharetab

共有ファイルシステムのシステムレコード

/etc/nfs/nfslogtab

ログに記録されたファイルシステムのシステムレコード

/etc/nfs/nfslog.conf

ロギング構成ファイル

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/file-system/nfs

関連項目

getnetbyname(3C), netgroup(5), nfslog.conf(5), attributes(7), nfssec(7), mount(8), mountd(8), nfsd(8), nfslogd(8), share(8), unshare(8), zfs_share(8)

share コマンドを使用した NFS 共有の作成および公開は、その共有が解除されるまで永続的です。NFS 共有の公開は、次の SMF サービスによって管理されます。

$ svcs | grep share
online         Mar_07   svc:/network/shares:default

共有されているファイルシステムが有効なパス名へのシンボリックリンクである場合は、正規パス (シンボリックリンクがたどるパス) が共有されます。たとえば、/export/foo/export/bar へのシンボリックリンクである場合は (/export/foo -> /export/bar)、次の share コマンドを実行すると、共有されるパス名として (/export/foo ではなく) /export/bar が生成されます。

# share –F nfs /export/foo

クライアントが server:/export/foo のマウントを試みる場合、結果は使用される NFS プロトコルのバージョンによって決まります。NFS Version 2 および Version 3 を使用した場合、結果はクライアントが server:/export/bar のマウントを試みたかのようになります。

NFS Version 4 を使用した場合、状況はもう少し複雑になります。そのシンボリックリンク自体が共有されているディレクトリ内にある場合、結果はクライアントが server:/export/bar のマウントを試みたかのようになります。そのシンボリックリンクが共有されていないディレクトリ内にある場合、クライアントでエラーが表示されます。