我对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中。
阅读此书后,我肯定想知道:
- 仅公开这类客户信息不是很不安全吗?
- 并非不知道服务器管理员必须拥有带有许多陈旧客户端的rmtab ;
- 这是那个安装与NFS4目录客户之所以
mount -v
能看到像输出“什么也没有安装”,即使一些被安装?
关于nfs4,我还有很多其他问题,但我暂时将其保留下来.. :)