了解NFS4(Linux服务器)


26

我对Linux上的NFS4感到有些困扰。某些“外面的”信息似乎与其他信息冲突,并且其他信息似乎很难找到。因此,有几件事引起了我的注意,希望那里的人可以对此有所启发。

这个问题专门针对没有Kerberos等的NFS4。

1.出口

手册exports页中关于/ etc / exports结构的信息不明确。

引用自exports(5)

另外,路径名称后的每一行可能都有一个或多个默认选项规范,形式为破折号(“-”),后跟选项列表。

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

“仅此行上的后续出口”是什么意思?

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.. 可以看到该目录。

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. 并非不知道服务器管理员必须拥有带有许多陈旧客户端的rmtab ;
  3. 这是那个安装与NFS4目录客户之所以mount -v能看到像输出“什么也没有安装”,即使一些安装?

关于nfs4,我还有很多其他问题,但我暂时将其保留下来.. :)


也许导出列表不喜欢您奇怪的绑定挂载文件系统。首先尝试使用/ mnt / users ...
jirib,2012年

这与nfs4有关,它需要一个“伪文件系统”,即一棵树文件系统层次结构。请您能说明您的意思吗?
鼓火

该Wiki页面还声称不再需要fsid = 0:wiki.linux-nfs.org/wiki/index.php/…,但“人工出口”仍意味着它是必需的
SystemParadox

1
我想说我支持这个问题。像您一样,我观察到许多相同的事物,并且有相同的问题甚至更多。好像是一团糟。
飓风

1
一个帖子中有太多问题。@drumfire,能否请您将其分解为多个更简单的问题-帖子?
维克多·亚雷玛

Answers:


7

伟大的问题,突出了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错误运行时看到“没有安装”的原因吗?
    我还没有碰到这个
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.