最近需要在Windows系统导出NFS,供一块开发板开发Linux应用程序。在cygwin中有nfs-server软件包(参考:Windows上的NFS Server 软件),但在我公司的电脑上,软件包安装的portmap服务无法启动,因而无法使用。因工作环境限制,必须找到windows版本的NFS Server软件,否则后续的工作就要停止。
网上google了两天,发现微软提供的Services for UNIX(SFU)软件包里包含NFS Server,可以满足我的要求。目前SFU的版本是3.5,于2004年1月发布,可免费使用。SFU软件包还包含其他的UNIX功能组件、Unix shell环境和SDK,但版本太老,不推荐使用。

1、安装
SFU软件包的下载地址是: "http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=896c9688-601b-44f1-81a4-02878ff11778"
下载的软件包程序是自解压程序,运行后解压到某个目录内,然后运行其中的setup.exe程序安装软件包。安装时选择custom模式,只选择安装NFS Server,和相应的认证模块(安装程序会提示安装此认证模块),其他步骤按缺省设置安装即可。安装完毕后需要重启机器。

2、配置
(1)准备UNIX的用户、组的描述文件passwd和group
passwd:
root:x:0:0:root:/root:/bin/sh

group:
root:x:0

上面的是最简单的内容,可以根据实际情况添加其他用户、组。

(2)将UNIX的用户映射到Windows用户
在 “开始”菜单启动windows for UNIX-->Services for Unix Administration,然后在程序界面上点击左面的User Name Mapping项,进行配置:在configuration标签下,选择Use password and Group files,填入上步骤准备的passwd和group文件的文件路径;在Maps标签下,将UNIX用户映射到合适的Windows用户。配置完成后,点程序界面右上角的Apply按钮,使配置生效。

3、将Windows的目录按NFS导出
在Windows系统中选择要导出的目录,点鼠标右键,在弹出菜单中选择“属性”菜单项。然后在属性配置对话框内,点NFS Sharing 标签,选它下面的share this folder。点“确定”按钮后,该目录就能按NFS导出了,目录的图标也有了变化。

4、客户端安装NFS共享目录
客户端用mount命令来安装NFS共享目录。我的客户端是一块Linux的开发板,安装时还需要在mount命令中添加 -o nolock 选项,否则无法正确安装NFS共享目录。

5、对客户端的读写权限控制
可以通过Client Groups对客户端的读写权限进行控制。在Services for Unix Administration程序中,点击左面的Server for NFS项,选择Client Groups标签,添加客户端组和所包含的客户端的IP地址。配置完成后,点程序界面右上角的Apply按钮,使配置生效。
在要导出的NFS目录设置对话框中,点NFS Sharing 标签右下角的Permissions按钮,把刚才设置的客户端组Add进来,并设置合适的读写权限。