企业应用中 Windows与Unix资源共享(一)
2007-10-29 19:30:19   来源:   评论:0 点击:

众所周知,Unix和Windows系统采用的是完全不同的文件系统,从比特级上就有极大差异,这种底层设计思路上的不同对两种系统平台的共存和共享是一个很大的挑战。本期我们选择了下面这篇文章,希望给广大网管朋友提供一个解决资源共享问题的方法,同时也希望大家把自己想到的好办法提供给我们,通过我们的杂志与全国同行共享您的宝贵经验!

需要说明的是,由于在与Windows共享的问题上Linux与Unix有诸多类似,本文中所指Unix均含Linux。

这些年来,Unix与Windows操作系统各自拥有其支持者及相应的市场份额,在很多企业和学校里,都同时存在Unix与Windows系统的电脑终端。Windows主机彼此间可以利用网上邻居达到资源共享的目的,Unix系统之间也能通过NFS(Network File System,网络文件系统)实现目录共享,而Unix和Windows之间由于采用了完全不同的文件结构,无法直接实现资源共享,本文就为大家介绍一种利用Samba服务器来实现Unix与Windows间资源共享的办法。

在介绍如何安装及使用Samba服务器之前,我们先来谈谈它所应用的理论基础。

在Unix系统中,“Samba”是通过服务器消息块协议(SMB,Server Message Block)在网络上的计算机之间远程共享Unix文件和打印服务的软件包。虽说大多数人都不清楚,但事实上,任何使用Samba和微软Windows组网协议的人都在使用SMB协议。SMB协议是Windows使用共享文件和打印服务的标准化协议,它可以在两台计算机之间共享文件、打印机、接口,也支持共享通信元素,如邮件和命名管道。SMB协议以请求回应的方式运行,当客户机发送请求时,请求包含在SMB协议中传到服务器。服务器收到这些信息,经过解释,对客户机发回应答。当一台计算机通过SMB协议在网络上共享资源时,它就变成了这种模式下的服务器。当一台计算机隶属于共享资源时,它就变成了客户机。一旦客户机连接到服务器上并且被授权,该客户机就可以向服务器发送命令,来打开文件、读写文件、关闭文件、删除文件、查找目录和执行其他文件和目录命令。SMB协议是一种应用层协议,Samba就是在TCP/IP基础上实施SMB协议的应用软件(关于SMB协议更详细的资料,可以访问http://samba.anu.edu.au/cifs/docs/what-is-smb.html,这里有针对SMB协议的较为详细的阐述)。

Samba是一个开放源代码的软件,任何拥有GNU通用公共许可证(GPL)的人都可以使用,任何对该产品有兴趣的人都可以免费得到它的源代码或可执行文件。您可以通过http://www.samba.org获得有关Samba的详细信息,同时在此主页,也可以取得Samba软件的最新版本(当笔者撰写本文时,最新版本为2.2.7)。

Solaris和Linux是我们在网络应用中使用较多的网络操作系统,下面我们分别以这两个操作系统为例来介绍如何使用Samba软件实现与Windows系统的资源共享,其中Solaris使用的是Solaris 8 for SPARC,Linux使用的是Red Hat Linux 7.3 for x86。Samba软件的使用主要包括三个部分:在Windows系统上访问Unix的共享资源、在本地或远程通过浏览器来管理Samba服务器、在Unix系统上访问Windows的共享资源,下面我们就依次介绍。

一、安装Samba

在Red Hat Linux 7.3中已经自带了Samba软件,如果您在安装系统时没有选择安装,那么可以从Samba的官方站点下载其rpm版本,执行下面的命令安装:

# rpm -ivh samba-2.2.7-1.i386.rpm

在Sun公司最新发布的Solaris 9中已经自带Samba 2.2.0,但在Solaris 8及以前的版本中需要将Samba作为第三方软件包安装,可以从Samba的官方站点或http://www.sunfreeware.com下载,解压安装:

# gzip -d samba-2.2.2-sol8-sparc-local.gz

# pkgadd -d samba-2.2.2-sol8-sparc-local

二、配置Samba在Windows系统上访问Unix的共享资源

(1)配置Samba服务器

下面介绍如何手工配置Samba的配置文件smb.conf以使samba成为一个符合需求的文件服务器。在Solaris 8中当安装完Samba之后,安装程序并没有为Samba服务建立配置文件smb.conf,而需要用户创建该文件。方法如下:

# cd /usr/local/samba/lib

# vi smb.conf

Red Hat Linux 7.3如果默认安装samba,则会自动产生smb.conf配置文件,且每个设置项有详细的注释,只需在其配置文件上修改即可:

# vi /etc/samba/smb.conf

smb.conf配置文件类似于Windows系统中的.ini文件,由一系列单元组成,每个单元包含一系列参数,这些参数控制了Samba的行为方式。除了三个特殊单元global、homes和printers外,还有一个单元描述了一个单独的共享资源,客户端连接到这些共享资源,然后访问共享资源中的文件。用户可在文件smb.conf中插入注释,帮助自己和他人更好地了解文件所要完成的任务。有两种插入注释的方法:在注释行前插入分号“;”或英镑符“#”均可。一般来说,注释符仅对当前行有效。用户也可以使用标准Unix连接字符将注释行扩展到一行以上,也就是说,用户可在行的结尾处放置一个反斜杠“”,这样就能强制Samba将下一行当成是本行的继续。下面我们创建一个简单的smb.conf配置文件,并对其意义加以解释。如下:

[global]

# 此区域设定Samba服务器的整体环境。

netbios name = no1

# 设定Samba服务器的NetBIOS名称。若不设定此参数,且Samba服务器主机的域名为no1.cuug.com,则默认值将设为no1。

workgroup = cuug

# 设定Samba服务器所要加入的工作组的名称。

server string = %h Samba Server %v

# 指定浏览列表里的主机描述。可以是任何字符串,也可以不填,在此字符串中可指定2个变量:

%h:显示执行Samba服务器的主机名称

%v:显示Samba服务器的版本编号

若将参数设成以上范例,将会在客户端说明中看到结果:sun Samba Server 2.2.2。

hosts allow = 166.111.1.*

# 允许连接的主机地址,默认允许所有主机可以访问,因此不设定也可以。

以下范例允许来自166.111.1.*的所有主机连接,但166.111.1.1主机除外:

hosts allow = 166.111.1.* EXCEPT 166.111.1.1

以下范例将允许来自150.203.5.*及no2主机连接:

hosts allow = 150.203.5.no2

printcap name = /etc/printcap

# 打印机设定文件存放的位置。

load printers = yes

#是否要载入打印机设定文件printacp,默认值为“yes”。

log file = /var/log/samba/log.%m

#设定日志文件的存储位置,“log.%m”表示依登入账号名称来生成不同名称的记录文件。

max log size = 50

# 设定日志文件的最大尺寸,上述范例设置此文件最大不得超过50Kb,若设成“0”则表示没有限制。

security = user

# 设定安全级别,Samba一共有4种不同的安全等级:

1.Share:用户不需要账号及密码即可登入Samba服务器。

2.User:Samba服务器默认的安全等级,检查账号及密码的工作由Samba服务器负责。

3.Server:检查账号及密码的工作指定另一台Windows服务器或Samba服务器负责。

4.Domain:指定Windows服务器来验证用户所输入的账号及密码。

除了share等级之外,其他3种等级,用户均必须输入正确的账号及密码才能登入并使用Samba服务器的共享资源,本例我们使用user等级,这也是我们使用最多的官方推荐的等级。

encrypt passwords = yes

# 设定当Samba用户端将账号与密码传送到服务端时,是否采取加密的方式。由于Windows95 OSR2及NT SP3以后的版本,默认均采用加密的方式传送密码,所以采用这些版本的主机,需要在Samba服务端,将此选项设成“yes”,缺省是注释的。

smb passwd file = /usr/local/samba/lib/smbpasswd

# 指定对用户口令校验的密码文件,从安全起见,smbpasswd文件的存取权限应设为600。如果使用Red Hat Linux 7.3则默认此目录为/etc/samba/smbpasswd。

[homes]

# 当用户请求一个共享时,服务器将在存在的共享资源段中去寻找,如果找到匹配的共享资源段, 就使用这个共享资源段。如果找不到,就将请求的共享名看成是用户的用户名,并在本地的password文件里找这个用户,如果用户名存在且用户提供的密码是正确的,则以这个home段克隆出一个共享提供给用户。这个新的共享的名称是用户的用户名,而不是homes,如果home段里没有指定共享路径,就把该用户的宿主目录(home directory)作为共享路径。

comment = Home Directories

# 针对此共享资源所做的说明文字,默认值为空字符串。

browseable = no

# 设定用户是否可看到此资源。默认值为“yes”。若将此参数设为“no”,用户虽然看不到此资源,但拥有权限的用户仍可直接输入该资源的网址,来存取资源。例如将某服务器所共享的/tmp目录,设成“browseable = no”,则用户就看不到此共享的目录,但直接输入目录的路径“\no1tmp”,仍可进入此共享目录。

writable = yes

# 设置共享资源是否可写入,此参数与“read only =”参数有相反的作用,默认值为“no”。此参数只适用于共享的资源是目录时;若共享的资源是打印机,则不需设定此参数。

[printers]

# 此区段设定共享的打印机。

comment = All Printers

path = /var/spool/samba

# 打印机队列(spool),用户必须自行建立此目录。

browseable = no

guest ok = no

# 设定是否不需账号及密码即可使用。

writable = no

printable = yes

# 设定是否允许用户更改打印机队列中文件。

[webfile]

# 对共享资源段的设定,webfile为下面所共享目录的共享名。一个设置段只能设置一个共享目录,如果要共享多个目录可以写多个设置段。

path = /usr/local/httpd/htdocs

# 指定共享目录的位置

valid users = webmaster

# 设定允许登入的用户,多个用户可以使用空格分隔,如“valid users = webmaster ftpmaster”。

若设成以下范例,则允许用户liming和属于baoshi工作组的用户登入:

valid users = liming,@baoshi

writable = yes

# 上述语句定义了共享目录/usr/local/httpd/htdocs,用户webmaster对这个目录具有读写权限。

(2)建立账户

如果上述可以访问共享资源的用户在系统中没有,则以root身份添加此用户,如有可以跳过下面步骤的前两步,执行命令如下:

# useradd webmaster # 生成口令是空的一个账户

# passwd webmaster# 为新用户设置口令

# cd /usr/local/samba/bin

# ./smbpasswd -a webmaster# 赋予webmaster用户Samba服务器的验证密码

笔者在实际使用中发现,用户在系统中的密码和用户使用Samba服务Samba的验证密码如果设为一致,有时使用上会出现问题,所以建议读者最好两个密码不要设置为同一个。

相关热词搜索:企业应用中 Windows与Unix资源共享(一)

上一篇:企业应用中 Windows与Unix资源共享(二)
下一篇:网络管理技巧 Windows 2000活动目录日志

分享到: 收藏
频道总排行
频道本月排行