了解NFS4(Linux服务器)

我在Linux上被NFS4困扰了一下。 有些信息似乎与其他信息相冲突,其他信息似乎很难find。 所以这里有几件事引起了我的注意,希望有人能在这方面做点什么。

这个问题专注于没有Kerberos等的NFS4。

1.出口

/ etc / exports结构中的exports manpage中有不明确的信息。

exports(5)报价exports(5)

此外,每行可能有一个或多个默认选项的规格,path名后面是短划线(“ – ”),后跟选项列表。

选项列表仅用于该行上的所有后续导出。

“仅此后出口”是指什么?

1.2 fsid=0不再需要了吗?

当我在linux-nfs列表中发现了一个注释,说fsid = 0不再需要的时候,我正在寻找fsid。 现在我只是困惑,我需要与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不导出? 我没有导出这个目录,虽然我没有看到/dev/disk/by-label/users的内容,除非我指定了crossmnt ,我仍然可以写入目录。 我写到那里的所有东西都进入了/exp/users的底层目录,这可以在我umount /exp/users; ls /exp/users时看到umount /exp/users; ls /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中简单地删除匹配项。

(……)

但是请注意,很less保证/ var / lib / nfs / rmtab的内容是准确的。 甚至在调用UMNT之后,客户端可能会继续访问导出。 如果客户端重新启动而没有发送UMNT请求,那么在/ var / lib / nfs / rmtab中保留该客户端的陈旧条目。

读完这个之后,我当然想知道:

  1. 仅仅暴露这种types的客户信息是不是非常不安全?
  2. 不知道服务器pipe理员绑定了很多过时的客户端rmtab;
  3. 这是挂载nfs4目录与mount -v客户端看到输出“没有被挂载”的输出的原因,即使有东西挂载?

我还有很多关于nfs4的其他问题,但是我暂且保留在这里.. 🙂

很好的问题,突出了文件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有安全风险?
    我想这取决于你的用例来回答这个问题,在我的networking上它没有提供可信的信息泄漏,但是我可以看到它可能的情况。
  • rmtab会不会充满陈旧的条目?
    潜在的是,再次取决于你的部署场景/用例。
  • 这就是为什么一些运行mount -v客户端错误地看到“没有被挂载”?
    我还没有遇到过