Windows客户端访问Linu服务器NFS在现今的企业环境中,既存在广泛在办公环境中使用的Windows系列,还存在工业环境中广泛使用的Hp-ux,SCO,Solaries,AIX等,还有数不清的Linux分发版,在这样一个复杂的异构环境中实现无缝的互连互访,肯定伤透不少人的脑筋,Windows用户通过网络邻居实现互访是很简单的事,但在不同的操作平台实现互访却不太容易,当然不是没有办法,Samba就是一款优秀的提供Unix与Windows之间互连互通的工具,但用户需要许多Unix系统下的系统管理经验,所以今天的主角却不是它。我的工作环境面对的困境:不同的产品生产线中有不同类型的Unix,运行着不同的测试程序,测试日志要提交给数据服务器,而数据服务器却是Windows系统(2000/2003),最初Unix上装有Samba,每次服务器上的程序通过Samba访问Unix上的文件时,总是有找不到路径的错误,映射成本地盘或者UNC路径也好,都有同样的问题.也许是对方的系统管理人员的配置的问题吧,但我们无法改变对方,所以求人不如求已,了解到几乎所有类Unix平台都有NFS(Networkfilesystem),这是一个Unix共享网络文件和程序的方法,所以能有一个在Windows提供一个NFS服务器的东东多好,这里就介绍一款跨平台通讯的工具集SFU.SFU,全称是ServicesForUnix,是M$是一个挖Unix墙角的工具,有需要的可以从M$的官方网站下载下面先来了解下SFU是什么?Microsoft®Windows®ServicesforUNIX(SFU)3.5允许Windows和UNIX的计算机之间共享数据、安全信任。而且SFU3.5技术为Unix应用程序和脚本提供了在Windows环境下高效执行的机制。IT管理者正在寻找无缝地在他们的Windows和UNIX系统之间整合混杂网络和共享信息的解决方案。当用户在网络中不同操作系统之间计算机漫游时,不应该遇到障碍。企业也正在寻找在Unix应用、资源及专有的技术上不断发展的最小投资方案。基于Windows计算机技术解决方案的拥有总成本(TCO)是无法抗拒的。Microsoft®WindowsXPandMicrosoft®WindowsServer2003已经增加新的特性,并且已经对操作系统的安全性、可靠性、可用性进行了巨大改进。随着CPU的处理性能以指数的比率在提升、IA架构解决方案性价比的大大提高,使得IA架构解决方案逐渐进入企业应用的高端服务器平台的领域。基于Windows/WindowsServer的企业应用已经逐渐渗透到传统地基于UNIX的网络应用环境中,基于Windows/WindowsServer的应用已经与基于Unix的应用同样重要和可靠,甚至在某些应用领域已经成为Unix应用的替代方案。很多企业已经在基于Unix和Windows的应用、数据库、商业逻辑等进行了很大的投入,而在这两种应用体系下的应用之间存在广泛的集成关系,企业的职员熟练掌握了其中一种技术后,还需要花费大量的精力将他的经验和知识转移到另一种技术。SFU提供一种框架,包括在两种环境下协同的工具、执行环境、管理架构,使经验和知识的转移尽量的简单化NameMapping和ServicesforUNIXNFS支持操作系统技术指南默认情况下,NFS协议使用UNIX用户标识进行访问控制。这种用户标识通常由用户标识符(UID)和组标识符(GID)组成。基于Windows的NFS服务器必须从NFS请求中识别出Windows名称空间中的请求用户。由于基于Windows的计算机和域不使用UID和GID进行标识,因此需要从NFS请求中包含的UID和GID到Windows用户名进行映射。基于Windows的NFS客户机需要在转发NFS请求之前先将请求的Windows用户的用户名映射到UID/GID。访问基于UNIX的NFS资源的Windows用户需要提供UNIX标识(UID/GID)。这就要求Windows用户使用他们的UNIX用户名和密码在UNIX网络中验证自己的身份。UserNameMapping是ServicesforUNIX的一个组件。该组件提供在基于Windows的网络用户名和基于UNIX的网络用户名之间进行相互映射的功能。对于那些在基于Windows和基于UNIX的域中具有不同身份的用户,这是将两个网络中的用户名关联起来的一种方法。该组件的设计目标如下:在网络间共享一套用户名映射。ClientforNFS、ServerforNFS和GatewayforNFS的多个实例应只使用一套映射。这将使用户在使用任意计算机上的任意NFS产品时可以进行一致的访问。减轻维护提供NFS服务或远程Shell程序服务(RemoteShellService)的所有Windows计算机上的映射管理任务。使Windows用户通过一次注册即可访问基于UNIX的NFS资源。用户不必记住两套用户名和密码,也不必分别对两个操作系统进行注册。ServicesforUNIX定位SFU的主要目的要提供对使用者、管理者和开发者克服在UNIX和Windows之间的互通性工具,允许企业信息资源在它们之间无缝地分享。对资源的访问取决于企业的安全策略。SFU的设计目标是:*无缝的在Windows和UNIX网络协议之间数据分享*采用现有的Unix惯例和协议,对Windows和Unix进行远程命令行访问*混杂网络管理,包括通常的目录管理和用户密码同步*完整支持UNIX脚本,包括shell,公用程序,文件联接和根文件系统*为关键企业应用提供高效率的应用开发和执行环境*简单、集成的安装过程*所有的SFU系统管理和维护简单化SFU和Windows架构:ServicesforUNIX特点*Interix是基于Windows内核之上的子系统,而不是一个Unix的仿真环境,Interix子系统是一个基于WindowsNT/2000/XP之上的完全整合的POSIX系统。它在Windows操作系统上对Unix应用的编译和运行提供完全的支持,它为Unix开发人员对运行于Unix之上的应用提供了超过1,900个API和已有的Shell脚本的完整支持,其他Unix应用从而可以简单快速的重新部署到Interix上。*SFU提供UNIX和Windows之间共享文件:oNFS客户机oNFS服务机oNFS网关*SFU提供UNIX和Windows之间远程命令行方式进行访问:oTelnet客户机oTelnet服务机*SFU提供一致的跨Unix操作系统平台脚本执行的能力:oKornShelloCShello超过350常用的UNIX命令和应用o在NTFS和NFS文件系统下支持文件联接o单一根文件系统结构*采用Microsoft®WindowsActiveDirectory®service(活动目录服务)的NIS服务器功能提供对网络管理功能*在Windows和Unix之间提供用户信息(包括口令)的同步*SFU安装采用Windows提供的安装工具。*对SFU的部件和服务的管理采用Windows的MicrosoftManagementConsole(MMC)和WindowsManagementInstrumentation(WMI)管理工具,或者采用命令行脚本方式管理(官方文章--End--)如果这正是你想要的,那就先去上面的下载地址下载,一边下载一边来看这篇文章,节省您宝贵的时间。下面正式开始吧:1.安装:下载SFU安装文件到本地服务器,这个东东有217M呢,幸亏最近网速还好,运行解压,再安装吧,3.5版的不要选择默认安装,反正我第一次默认安装时,是没有通过。累的很郁闷。详细安装步骤如下:1.1将远程Linux机器的/etc/passwd和/etc/group文件复制到本地C:\盘。1.2运行SFU35BETA_EN.exe,这是一个自解压文件,指定一个目录,释放压缩的文件。在释放目录中,运行SfuSetup.msi,出现MicorsoftWindowsServicesforUNIXSetupwizard窗口。点击Next,出现CustomerInformation窗口。点击Next,出现LicenseandSupportInformation窗口,选中“Iaccepttheagreement”。点击Next,出现InstallationOptions窗口。选择CustomInstallation,点击Next,出现SelectingComponents窗口。1.3全部安装就可以了,但估计你会和我一样,出现Youcan'tinstallbothclientforunixandgatewayforunix这们的错误信息,那只好把gatewayforunix取消掉,事实证明,这个东西,你根本也用不到.1.4点击Next,出现UserNameMapping窗口,选中Passwordandgroupfiles。这一步相当重要。点击Next,在Passwordfilepathandname下的空白栏中输入C:\passwd,在Groupfilepathandname下的空白栏中输入C:\group。点击Next,出现InstallationgLocation窗口,选择安装位置。点击Next,开始安装(约21MB)。最后选择Finish,结束安装。1.5安装后要重启电脑,痛苦中...安装后程序会自动在管理工具中加入一个MMC,这也是M$软件的一个共性吧,当然你也可以从命令行启动它。2.设定NFSServer,从管理工具里打开SFU控制台,或者运行sfumgmt.msc,我这里主要是它的ServerforNFS,所以只用设一下ServerforNFS,我没了下它的Logging和ServerSettings,在Logging里可以设值你想要的审计日志,我选了All,保存到L:\SFU\Log\sfusvr.log,如下图:在ServerSettings的设定里,解释一下Directorycachesize的作用,因为缺省的数据块是1K,这样一个数据块正好放入一个数据包,因为NFS是一种不可靠的协议,丟了一个数据包再发一个数据包是很非常方便的,但对于当今的网络来讲,性能已经很可靠了,大家把这个值设大一点吧,缺省是128KB,设完后记得Apply:3.打开资源管理器,选择你想要共享的目录,右击,再选择Sharing和Security,这时属性页会有一个NFSSharing页,如果没有或者是灰色的,可能是你的NFS服务没有启动,到服务控制台启动它下面两个服务ServerforNFS和ClientforNFS,我设了一个共享名为Test目录,Encoding为ANSI,因为许多老Unix可能还不支持Unicode,如下图,在权限perimissions里改为Read-Write,这样NFS的客户端可以放数据到这个目录了。确定推出。4.好了,现在我们可以在服务器上测试一下NFS了,在[开始]-[运行]里敲入CMD,点击OK,在命令行里敲入下面的命令:mounttestserver:/Test*转到资源管理器看看,是不是多了一个网络盘,咦,这个mount是什么,对于只用过Windows系统的人来说,肯定见得太少了,不过,在Unix系统里却是基本命令,现在只要知道用就行了,它的作用是把在一个名为testserver服务器上的通过NFS共享的Test目录映射成一个本地盘,*意味着让系统自动分配一个盘符,更多的应用就留着以后学习吧,5.现在来设设Unix客户端,这些Unix机器最好是和NFS服务器位于同一子网,这里假定你的所有机器位于同一网段吧,NFS服务器的IP是192.16