关于NFSv4中fsid=0导出根目录的作用及配置相关疑问
NFSv4中fsid=0导出根目录的作用及配置相关疑问
我最近在把NFSv3的共享配置切换到NFSv4时遇到了不少困惑,想跟大家聊聊fsid=0这个设置的实际意义,先说说我的配置背景:
原NFSv3配置
/exports/home 192.168.1.0/24(rw,sync,no_subtree_check) /exports/root 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
切换后的NFSv4配置
/exports 192.168.1.0/24(ro,fsid=0,no_subtree_check) /exports/home 192.168.1.0/24(rw,sync,no_subtree_check) /exports/root 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) #/etc 192.168.1.0/24(ro,no_subtree_check) # Test entry to check export root is working.
切换后我修改了客户端的挂载命令,去掉了路径里的/exports。测试发现,注释里的/etc条目无法正常挂载——虽然不会报错,但会一直卡住直到手动中断。同时正如我担心的,/exports的ACL会向下继承,导致所有共享都变成了只读模式,而且全局都启用了root squash,哪怕我单独修改/exports/root的ACL指定某一台机器,也没有任何效果。
现在我有几个核心疑问想请教大家:
- 除了给那些无法确定唯一文件系统标识的场景提供ID之外,设置
fsid=0的导出根目录到底有什么实际作用? - 这样的配置反而降低了共享设置的灵活性(比如刚才遇到的ACL继承问题,是不是只有用
nocrossmount且对应不同文件系统才能规避?) - 对比旧的NFSv3配置,本来也无法直接挂载
/etc,那fsid=0能带来什么额外的安全性提升? - 是不是只有当
/exports是一个专门的挂载区域,用来挂载多个独立的文件系统,并且每个文件系统需要用不同ACL导出时,fsid=0才有意义?
另外还有个关于配置逻辑的疑问:感觉现在NFS服务器的配置逻辑和以前反过来了。以前在Solaris上,我们会把所有要共享的内容直接挂载在/export下然后导出,服务器会把/home/user绑定挂载到/export/home/user;但现在常见的做法是/home是实际的文件系统挂载点,再绑定挂载到/exports下,这个理解是正确的吗?
备注:请不要纠结no_root_squash的安全性问题,我清楚相关风险,例子只是用于说明场景~
备注:内容来源于stack exchange,提问作者Tony Cooper
相关产品推荐
相关产品推荐

