NFSv4 fsid=0 を使用し、NFS ルートをフル LAN にエクスポートまたはエクスポートしない場合の影響

NFSv4 fsid=0 を使用し、NFS ルートをフル LAN にエクスポートまたはエクスポートしない場合の影響

NFSv4 チュートリアルでは、次のように共有ルートをサブネット全体にエクスポートすることを提案することがよくあります。これアーチウィキから:

/etc/export:

/srv/nfs        192.168.1.0/24(rw,sync,crossmnt,fsid=0,no_subtree_check)
/srv/nfs/music  192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/public 192.168.1.0/24(ro,all_squash,insecure,no_subtree_check) desktop(rw,sync,all_squash,anonuid=99,anongid=99,no_subtree_check)

もっと安全でしょうか?いいえ最初の行はありますか? (私の質問で「最初の行」に言及するときは、上記のコードスニペットの最初のエクスポート行に言及しています。)

NFSv4の場合、fsid = 0はオプションであり、これは主にパスを短縮するようです(/ srv / nfsを/に変換することによって)。予備テストでは、/ srv / nfsを使用している限り、最初の行なしでエクスポートが正常に機能します。最初の行が提供する重要な機能は何ですか?

また、バインドマウントが1つ以上あることがわかっている場合は、この例を検討したいと思います。

/srv/nfs/projects

(「プロジェクト」の内容は音源束の設置内容と異なり、敏感な内容であることを前提とします。)

上記の最初のエクスポート行は、特にcrossmntとno_subtree_checkを使用すると、LAN上のすべてのクライアントがエクスポートされたファイルシステム全体にアクセスできるように見えます。所有者とグループの権限を無視することを提案するわけではありませんが、最初の行がなければエクスポートは正常に機能し、/srv/nfsの下にある他のバインドマウント(例:/srv/nfs/projects)は不要にサブネット全体に開かれないと思います。します。 、所有者、グループ権限に対する監督の可能性が公開されます。

もちろん、同様のエクスポートを追加して「プロジェクト」を正しく共有できます。

/etc/export:

/srv/nfs/projects 192.168.1.123(rw,sync,root_squash,subtree_check)

この新しい行は最初の行の影響を受けますか?最初の出口ラインに重要な役割は見られません。

その行があればはい助けや推奨事項はありますか?これは賢明ですか?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)

次回のより具体的なエクスポートがこのエクスポートをオーバーライドすることは正しいですか?たとえば、最初の行がroに変更され、さらに制限的になっても(以下の例のように)、次の行は「Music」へのrwアクセス権を正しく付与しますか?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)
/srv/nfs/music  192.168.1.2(rw,sync,no_subtree_check)

輸出品目を一覧表示する際の順序は重要ですか?優先順位はどのように決定されますか?より具体的なアドレス(例:192.168.1.2)は、より一般的なアドレス(192.168.1.0/24)よりも優先されますか?

注:この質問には単一のトピックがあるため、これを明確にするためにより良いタイトルを使用できますが、これまで正しいタイトルを見つけることができませんでした。編集者を歓迎します。

ベストアンサー1

これエクスポートしたマニュアルページfsidパラメータについて話しましょう。

NFSはエクスポートするすべてのファイルシステムを識別できる必要があります。通常、ファイルシステムのUUID(ファイルシステムにそのようなものがある場合)またはファイルシステムを保持するデバイスのデバイス番号(ファイルシステムがデバイスに保存されている場合)を使用します。

すべてのファイルシステムがデバイスに保存されるわけではなく、すべてのファイルシステムにUUIDがあるわけではないため、NFSにファイルシステムを識別する方法を明示的に知らせる必要があります。これはfsid=オプションで行われます。

このパラメータが時々必要な理由を知っているので、fsidマニュアルページでNFSv4について説明するものを見てみましょう(この部分は以前のバージョンとはかなり異なります)。

NFSv4の場合、エクスポートされたすべてのファイルシステムのルートである独自のファイルシステムがあります。これは、指定されたものとまったく同じまたは両方を意味しfsid=rootますfsid=0

つまり、NFSv4の場合、例の最初の行は、サーバーから特定のクライアントにエクスポートされたすべてのディレクトリが配置される基準点を定義します。一見すると、これはすべてのディレクトリをエクスポートできるNFSv3の柔軟性に比べて一歩遅れているように聞こえます。ただし、すでに他の場所にインストールされているディレクトリをこのディレクトリに簡単に配置できます。このように1行だけ追加すればよい/etc/fstab

/path/to/music/dir /srv/nfs/music none rbind 0 0

mount -a新しいファイルシステムをマウントするには実行してください。新しいアプローチは、本質的に疑似ルートファイルシステムとして機能し、クライアントがそのディレクトリ外のデータにアクセスするのを防ぎ、NFSサーバーがクライアントにファイルアクセスを許可する必要があるかどうかを簡単に判断できるようにすることで、複雑さを軽減しながらセキュリティを強化します。を強化します。

おすすめ記事