在企业信息系统中,不少企业既安装Windows 操作系统,又安装 Linux 操作系统,以满足不同应用的需求。这2 种网络操作系统的内核不同,接口也不同,应用各有特点,在实际使用中,如果能够发挥双方各自优势,使二者协同工作,无疑会为网络管理带来许多方便。本文介绍一种实用的共享这二者资源的集成方法。
一、互联互通
Linux是一种类Unix操作系统。这类网络的一大特点就是采用TCP/IP作为网络传输协议,所以与Unix类系统连接的其他系统也必须使用TCP/IP 协议。Windows Server 2003 内部有一个优化了的TCP/IP协议栈,可以提供高效的TCP/IP传输。因此连接Linux与Windows Server 2003 的前提是为他们配置TCP/IP 协议。
配置TCP/IP 通信协议时,要为服务器的每一块网卡指定IP地址和子网掩码。采用与Linux服务器相同的网络地址和子网掩码,可以使Windows Server 2003 服务器与Linux 服务器处于同一子网内,从而使交流更简单,但如果为了管理的需要,而把二者分配在不同的子网,则可以通过设置使用网关的办法,把不同的子网连接起来。另外还要为Windows Server 2003 和Linux 服务器指定其主机名和所属的DNS 区域。
TCP/IP 协议配置完成后,就可以实施具体的连接操作了。下面分别介绍连接与互访功能的实现方法。Unix 类系统大都支持主机终端网络和微机网络2 种联网形式。普通的Windows Server 2003 提供微机网络,要实现Windows 终端网络需要使用Windows Server 2003服务器的终端服务。本文不涉及主机终端网络。
在信息网络方面,传统的Unix 采用其网络文件系统NFS来提供文件和打印服务,由于NFS的出现较Windows系列网络系统早,它没有考虑对如今Windows 网络的兼容,因此要想使用这种系统,就应该在 Windows中安装类似PCNFS或DiskAccess 这样的能够使微机具有NFS 功能的软件,现在有许多第三方公司提供这些软件,配置的方法也因产品的不同而异。
微软的网络产品大多采用服务消息块(Server Message Block,SMB)协议来实现网络的应用,这是一种请求/回应的通信方式,客户机的请求被SMB 带到服务器,服务器分析 SMB 后给予客户机应答。SMB 协议方式一般是与NFS 协议方式不兼容的,因此以前在Windows 与Unix 共存时,必须为每一台Windows 客户机安装并调试第三方的附加软件,使其能够用NFS 与Unix 交流。现在情况则好多了,一些Unix 类系统的版本里已经开始包含与 Windows 系统兼容的服务协议,Linux 就是其中的佼佼者。Linux 提供一种称为Samba 的服务,这种服务在微软的SMB和Linux的系统之间起接口作用,使用它可以方便地实现Windows 和Linux 这2 种系统之间的联接,而不用再为Windows 系统安装任何附加软件了。本文主要讨论安装了Samba 服务的Linux 系统与Windows Server 2003 网络之间的连接问题。
在Linux 服务器安装时,可以选择是否安装Samba 服务。如果选择了安装Samba服务,则每次Linux 启动后,Samba 服务的守护进程就会自动运行。Linux 管理员也能够通过/etc/rc.d/init.d/ 目录下的smb 程序来重新启动或停止该服务。
Samba 服务的核心是由smbd 和nmbd 这2 个程序组成,其中smbd 负责对从网络访问Linux 系统的请求进行调度, nmbd 负责向网络发送Linux 服务器的信息。 Samba 服务一旦启动,使用ps x | grep mbd命令就可以查看到这2 个守护进程。 Samba 服务正常运行后, Linux 服务器也会出现在 Windows Server 2003 的服务器管理器里, 可见 Samba 服务使 Windows Server2003把运行Samba服务的Linux服务器当作了Windows 服务器。另外,在与该Linux 服务器处在同一Windows 域或工作组的Windows Server 2003 计算机上,若使用 Linux 的合法用户登录,则打开“网上邻居”就能够看到此Linux 服务器,如果Linux 服务器不与Windows Server 2003 计算机同域或同组,也可以在“网上邻居” 的“整个网络”中找到它。
要想改变Linux 服务器所隶属的Windows Server 2003域或工作组也很简单,只要用Linux的vi编辑器编辑其/etc/ 目录下的smb.conf 文件,并修改其[global]节的内容即可。如图2 示例,其中workgroup 就是隶属的 Windows Server 2003 域名或工作组名;server string 是对该L i n u x 服务器的注释; security 是安全认证模式,其中 share 是工作组的共享级认证, user 是域的用户级认证,server 是通过其他认证服务器进行认证,domain controller 是 Windows Server 2003 域控制器的计算机名。
Windows Server 2003 与 Linux建立连接后,Linux反过来也可以浏览到Windows Server 2003服务器的共享资源。Samba 提供Smbclient 命令来查询网络资源,使用-L参数便可列出某服务器的共享清单,这有点像Windows Server 2003 的Net View 命令。
二、使用Linux 资源
连接双方能够相互浏览表示网络服务工作正常,这时就可以根据具体情况设置网络共享资源了。Windows环境下设置各种共享的方法我们都很熟悉,这里就不再重复。 Linux Samba 服务的共享设置在smb.conf 文件内定义,只要编辑smb.conf文件并加入关于共享的内容即可。图2中显示的是smb.conf文件中的一段,它指定将Linux服务器的/usr/shared 目录共享出来,共享名叫myshared。注意,每次修改Smb.conf 文件后都必须使用smb 程序停止并重新启动Samba 服务,新的配置才能生效。
新生效的共享会立即通过Windows Server 2003 的 “网上邻居”浏览到。如果在smb.conf 中定义了采用用户级的安全认证,则从Windows Server 2003访问Linux 服务器时要验证用户的身份,如图3,输入Linux 服务器合法用户的名称和密码即可成功进入。
通过“网上邻居”打开Linux服务器图标,Linux服务器提供的共享资源就一览无余。对共享文件夹的使用与在Windows Server 2003 网络中一样,可以直接打开文件夹或者映射网络驱动器。
在“网上邻居”里,不但能够看Linux 的共享目录还能够浏览到Linux 的共享打印机。Windows Server 2003 的管理员可以像使用Windows 网络打印机一样去连接Linux 网络打印机并把它安装到本地,安装后可以再次通过Windows Server 2003 把它共享出来供网络中其他Windows 用户使用。
Linux 的打印机供Windows Server 2003 网络用户连接是由Linux的打印守护进程完成的,该进程响应网络打印请求并根据打印配置文件的定义来驱动具体的打印设备。如前面图1 所示,在smb.conf 文件的[global]段里, Printing参数指定打印守护进程的名称,Printcap name指定打印配置文件的路径,Load printers参数决定是否在网上提供打印配置文件中定义的所有打印机的清单。
Linux 默认的打印配置文件是/ e t c / 目录里的 printcap,该文件是一些用冒号定界的参数,如图4,其中反斜杠(\)是续行标记,井号(#)是注释。
printcap 文件中在每一块的开始定义一台打印机的名称(如图6中的lp):sd参数定义该打印机的假脱机打印目录,lp定义设备文件,af指定日志文件,if设置输入过滤器。
定义Linux 打印配置文件后,在smb.conf 文件的 [printers]段内对Linux 网络打印机进行具体设置,其中 comment描述适用范围,browseable说明是否可以显示 printcap 文件定义的所有打印机,public 决定是否允许匿名来宾用户打印,printable决定用户是否在不打印的时候能够访问假脱机打印目录,writable 定义是否对假脱机打印目录具有写的权力,create mode 参数指定假脱机文件的许可权。
经过对smb.conf 文件的编辑并重新启动Samba 服务,Linux 的网络共享目录和打印机就能够在Windows Server 2003 网络中使用了。
三、使用Windows 资源
利用Samba 服务,在Linux 服务器中也能够使用 Windows Server 2003 的网络资源。Unix 类系统在设备使用上采用连接点的概念,而不是Windows 系统的驱动器概念,因此要把一个网络共享目录映射到本地,就应该为它指定一个本地连接点。Samba 服务有一个smbmount 程序可用来连接 Windows Server 2003 服务器的共享文件夹。在图5 的示例中,把一台Windows Server 2003服务器nmnz2003 中的一个共享文件夹Clients映射到Linux本地的/mnt/ ntshared 目录上。
进行映射后,Linux 用户进入连接点就可以像使用本机文件一样使用Windows Server 2003 服务器里的文件了。当然所有操作必须在Windows Server 2003 权限许可范围内进行。
Windows Server 2003 连接Linux 共享打印机很简单,反过来Linux 系统连接Windows Server 2000 服务器的共享打印机就稍微复杂一些,需要编辑修改打印配置文件Printcap,在打印配置文件里增加网络打印机。图6 示例中定义了一台名为Eps 的打印机。
在打印配置文件里增加了新打印机后,还要为该打印机定义网络位置以及连接用户等,这些信息保存在该打印机的假脱机打印目录里的.config文本文件内。比如在上例中编辑/var/spool/lpd/eps目录里的.config文件,有关打印机eps 的网络信息如图7 所示。
其中share 是采用通用命名规则定义的Windows Server 2003服务器上的网络打印机共享名,Hostip指定网络打印机连接的Windows Server 2003 打印服务器的 IP 地址,User 和Passwd 说明Linux 服务器以什么用户身份进行连接并打印,这个用户身份必须是Windows Server 2003 所允许的用户。
经过这样定义后,在Linux中就能够往Windows Server 2003服务器的共享打印机打印文档了。当然,如果在Linux 服务器中安装了X Window系统,那么连接网络打印机的操作也会像在Windows Server 2003 中一样简单。连接后可以做一个简单测试,例如,键入以下命令:
lpr -Peps printcap
即把printcap 文件打印到eps 打印机上。看看效果如何。
通过网络来访的Linux 打印作业也在Windows Server 2003服务器的控制范围内,利用其打印管理器能够监视并管理该远程打印,如图8。
在管理来访的Linux 打印作业时,其具体操作方法与管理Windows 网络中的打印作业一样。
以上介绍的有关Windows Server 2003 与Linux 的互联,都是在使用Samba服务的前提下完成的。与其他 Unix 类系统连接时,如果不能用Samba,则可以改用 NFS,但是需要有其他软件配合,还需要安装其他服务,比如TCP/IP 打印服务等。
通过本文介绍的方法,可以很容易地把当今最流行的两大网络操作系统集成起来,使二者很好的兼容,共享相互的资源,充分发挥各自的优势,方便用户的各种应用需求。
倪