Windows Server搭建NFS服务器之坑

身份认证

NFS是源自于unix的,因此其身份认证方式是采用当前用户的uid/gid组合,而不是像smb/cifs那样直观的用户名+密码。

跨windows和unix之间使用NFS,最大的问题就是身份映射,Identity Mapping。

方法一:通过kerberos传递身份,也就是LDAP,或者干脆用AD域。这个方法折腾了一整天还是没搞好,最终放弃。

方法二:把uid/gid映射到Windows系统中的user和group。

NFS4协议引入了一些尖端科技,会导致你即使映射好了,通过unixshare里新创建的文件,其usergroup仍然都是-2,所以这种方法只能用在NFS3协议上。

  1. 勾选AUTH_SYS

  1. C:\Windows\System32\drivers\etc下建立unix风格的passwd和group文件,将其中的名字部分替换成windows里对应的名字,如:

要注意的是,Windows的NFS Server非常弱智,这两个文件里不能有空行,而且group里的内置组必须用BUILTIN前缀,而不是计算机名。

严重怀疑整个NFS Server功能设计之初只考虑了给域内用。

Unix挂载

Ubuntu22.04的特定版本有bug,没法用NFS4,一直提示invalid argument啥的,解决方法是升级内核。

首先apt install nfs-common

然后sudo mount -t nfs -o mountvers=3 192.168.1.4:/UnixShare data -v

安全性

用脚后跟都能想到,uid/gid这种方式完全没有安全性可言,任何机器都可以把自己的uid和gid设置成和你一样,所以服务器端必须要有防火墙限制访问。

Windows中防火墙对应这两条规则,它们默认是对所有远程计算机开放的:

你也许会喜欢...

发表回复

您的电子邮箱地址不会被公开。