web-dev-qa-db-ja.com

親ディレクトリを共有せずにCentOSに複数のnfs4をマウントする

CentOSのNFS経由で/share/foo/share/barなどを共有したい。

私は遭遇しました この一般的な問題

mount.nfs4: mounting 192.168.101.254:/share/foo failed, reason given by server: No such file or directory

解決策は、親ディレクトリ/sharefsid=0でエクスポートしてから、/shareに関連するパスを使用してクライアントにコマンドをマウントすることです。

サーバーはファイルをエクスポートします:

/share 192.160.0.0/16(rw,fsid=0)
/share/foo 192.160.0.0/16(ro)
/share/bar 192.160.0.0/16(ro)

クライアントfstab:

192.168.101.254:/foo /share/foo nfs4 intr

しかし、これをサーバーからエクスポートしたい場合:

/share/private 192.168.101.123(ro)

それでは、多くのアドレスが192.168.101.123とそのサブディレクトリにアクセスできるため、これは/share以外のマシンでは利用できませんか?

もしそうなら、これは容認できないセキュリティホールです。そうでない場合、クライアントが/share/privateにアクセスできるにもかかわらず、クライアントが/shareにアクセスできないという私の保証は何ですか?

要約すると、サーバーが/share/foo/share/bar、および/share/private異なるクライアントマシンにエクスポートする必要がありますnfs4。

2
spraff

これを処理する最良の方法は、バインドマウントを使用することです。NFSエクスポート専用のフォルダーを作成します。

mkdir /srv/nfs

次に、これを/ etc/fstabに追加します。

/share/foo  /srv/nfs/foo    none    defaults,bind    0  0
/share/foo  /srv/nfs/bar    none    defaults,bind    0  0

/ etc/exportsはまったく同じですが、/ shareを/ srv/nfsに置き換えて保存します。また、/ etc/exportsのfooおよびbarエントリに一意のfsidを必ず割り当ててください。

1
pgoetz