web-dev-qa-db-ja.com

NFS4(Linuxサーバー)について

LinuxのNFS4に少し悩まされてきました。 「そこにある」情報の一部は他の情報と競合しているようで、他の情報は見つけにくいようです。だからここに私の注意を引いたいくつかのことがある、うまくいけば誰かがこれにいくつかの光を当てることができる。

この質問は、Kerberosなどを使用しないNFS4にのみ焦点を当てています。

1.輸出

/ etc/exportsの構造に関するexportsマンページには、あいまいな情報があります。

exports(5)から引用するには:

また、各行には、パス名の後にデフォルトオプションの1つ以上の指定があり、ダッシュ( "-")の後にオプションリストが続きます。

オプションリストは、その行の後続のすべてのエクスポートにのみ使用されます。

「その行のみの後続のエクスポート」とはどういう意味ですか?

1.2 _fsid=0_はもう必要ありませんか?

linux-nfsリストのコメント を見つけたとき、私はfsidを探していました。= fsid = 0はもう必要ないことを示しています。今私は混乱していますが、nfs4でそれが必要ですか?

2.エクスポートされていないディレクトリがまだマウント可能

次のツリーがあるとします。

_/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
_

そして、このfstabエントリに次のエントリがあります。

_/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0
_

そして私の輸出はまさにこれです:

_/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
_

そして_exportfs -arv_は以下を示します:

_exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
_

次に、なぜこれを行うことができ、クライアントでエラーが発生しないのですか?

_mount -t nfs4 server:/exp/users /tmp/test
_

_/exp/users_はエクスポートされませんが?このディレクトリはエクスポートしませんでした。crossmntを指定しない限り、_/dev/disk/by-label/users_の内容は表示されませんが、ディレクトリに書き込むことはできます。私がそこに書き込むものはすべて、_/exp/users_の基になるディレクトリに移動します。このディレクトリは、_umount /exp/users; ls /exp/users_ ..

3. _showmount -d server_の奇妙なケース

rpc.mountd(8)で述べたように、このコマンドは、現在クライアントによってマウントされているディレクトリ、または_/var/lib/nfs/rmtab_の古いエントリを表示できます。

Rpc.mountdデーモンは、/ var/lib/nfs/rmtabファイルにエントリを追加して、成功したすべてのMNT要求を登録します。 NFSクライアントからUMNT要求を受信すると、rpc.mountdは、そのエクスポートのアクセス制御リストがその送信者によるエクスポートへのアクセスを許可している限り、一致するエントリを/ var/lib/nfs/rmtabから削除するだけです。

(...)

ただし、/ var/lib/nfs/rmtabの内容が正確であることを保証するものはほとんどないことに注意してください。クライアントは、UMNTを呼び出した後でもエクスポートにアクセスし続ける場合があります。 UMNTリクエストを送信せずにクライアントを再起動すると、そのクライアントの古いエントリが/ var/lib/nfs/rmtabに残ります。

これを読んだ後、きっと私は疑問に思います:

  1. このタイプのクライアント情報を公開するだけでは、まったく安全ではありません。
  2. lotが古いクライアントのrmtabにバインドされているサーバー管理者を認識していません。
  3. _mount -v_を使用してnfs4ディレクトリをマウントするクライアントが、何かwasがマウントされていても、「何もマウントされていません」のような出力を表示するのはこのためですか?

Nfs4については他にもたくさん質問がありますが、とりあえずここに留めておきます。:)

26
drumfire

素晴らしい質問です。IMOのドキュメント化で、より大きなポイントを強調しています。これは完全な答えの試みです:

「その行のみの後続のエクスポート」とはどういう意味ですか?

ここで例がおそらく最も簡単です。

/export/stuff -rw 10.0.0.54 10.0.0.55

以下と同等です。

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

fsid=0もう必要ありませんか?

これは、ユースケースによって異なります。残りのクエリから通常のディスクベースのファイルシステムをエクスポートしているようです。その場合は、fsid=0(nfsv4では、エクスポートのルートファイルシステムを参照するように動作が変更されます)。

この動作を変更するには、no_subtree_checkオプションを削除します


rmtab関連のもの

  • rmtabの処理はセキュリティリスクですか?
    私が答えるのはあなたのユースケースに依存すると思います、私のネットワークではそれは信頼できる情報漏えいを提示していませんが、それが潜在的に可能性があるケースを見ることができます。
  • rmtabが古いエントリでいっぱいにならないか?
    可能性がありますが、展開シナリオやユースケースによって異なります。
  • これがmount -v誤って「何もマウントされていません」と表示されますか?
    まだこれに遭遇していません
7
CraigJPerry