
Samba系统
Samba系统简介
本文将介绍Samba系统的一些初始安装配置,并且可以从本文中学习到如何测试从Windows到Linux的连线以及测试从Linux到Windows的连线。除非你从上个世纪的80年代末突然消失在时空隧道中,直到最近才出现在这个世界上,否则,你都应该知道这种现实--如今Linux已经将其自己作为微软桌面系统的竞争者并且将其自己作为许多大型组织的伺服器系统的替代者。首先,Linux系统通过使用Samba系统来允许在Linux下访问Windows的档案和印表机,它希望通过使用这种包含Windows的客户端和伺服器的方式来帮助它取代微软。在微软自己的手册中曾经就有这幺一页,它之所以包含了 Novell,就是要在后来取而代之。
什幺是Samba?
Samba在市场上并不是一个新面孔。它最初出现在大家面前的时间是1992年。Samba系统通过利用越来越多的开放原始码软体,获得了丰富多彩的性能,并且变得越来越稳定。随着Samba系统的不断进化,对于那些正在考虑将其档案和列印解决方案迁移到Linux的系统管理员来说,如今它已经成为这些管理员的一个真正的可选项。
另外,在Linux系统上构建存储解决方案也是一种非常便宜的方法。首先,在机箱中安装一个支持IDE RAID 卡,安装Linux,启动Samba,然后你就可以一个在自己的网路上安排大量存储的存储空间,这是一种成本非常低的实现方法。对于那些移动专家的笔记本电脑的备份以及需要进行长期归档工作的企业来说,这种解决方案是非常理想的。
SMB协定
在安装Samba系统之前,很有必要了解一下Samba是如何工作的。Samba之所以能够工作,是因为它模仿的是Windows核心的档案和列印共享协定,该协定称之为SMB 协定(Server Message Block )。SMB在Windows出现之前就已经存在了。该协定可以追溯到上个世纪的80年代,它是由英特尔、微软、IBM、施乐以及3com等公司联合提出的。虽然在过去的20年中,该协定得到了扩展,但是该协定的基本理论仍然是相同的。
微软已经将SMB改名为公共网际网路档案系统(CIFS,Common Internet File System )。这在一定程度上是由于它想与最初的基于NetBIOS的SMB保持一定的距离。最初,NetBIOS是一个伟大的工具,但是渐渐地显示出该工具无法处理在内部网路中连线到计算机上的全部计算机的个数,或者在网际网路上无法显示连线到当前计算机上的计算机的个数。
Samba也执行了SMB (或者叫做CIFS,如果你愿意的话)的一个版本,这个版本在很大程度上与大多数的Windows版本兼容。有时候,微软Samba系统会出现崩溃,例如在Windows 2000的补丁包中,当正常的认证方式被改变时,就会导致Samba系统的崩溃。唯一的能够让Samba重新工作的方法是通过注册表来将认证方式改回来。儘管存在这些细小的缺陷,虽然这些缺陷在大量集成之后总是会出现的,但是,无论是从Windows连线到Linux还是从Linux连线到Windows 机器,Samba系统对于实现档案和列印服务来说总是很稳定的。
提示: 本文将以Red Hat 9.0上的Samba系统作为讨论的基础。但是你不要因此而考虑太多。因为无论你运行的是哪个版本的Linux,Samba系统在实质上是相同的,但是,在具体的配置细节上可能会有所不同。
安装Samba
自从Red Hat 9发行之后,Samba系统随之也发行了它的更新版本。正因为如此,你需要从RedHat网站上下载新的可用的更新版本。通过点击这里,可以登录Red Hat的Samba系统更新页面。
一旦你有了更新版本,你就可以使用下面的命令来安装他们:
rpm -ivh samba-2.2.7a-8.9.0.i386.rpm samba-common-2.2.7a-8.9.0.i386.rpm samba-client-2.2.7a-8.9.0.i386.rpm samba-swat-2.2.7a-8.9.0.i386.rpm
使用这个命令可以安装Samba系统的所有组件,包括一个称之为swat的配置工具。虽然我在本文中将不使用swat,但是你应该注意到这是一个非常有用的工具,该工具可以帮助你在Samba系统中配置更为複杂的选项。
Samba的基本配置
控制Samba安装的档案在"/etc/samba"目录下,其档案的名字是smb.conf。要想让Samba系统工作,需要对这个档案进行一些基本的编辑工作。 首先你必须改变"Hosts Allow"行中的内容,使该行中包含你的区域网路信息。如果你不对此行进行编辑的话,你的网路中的任何人都无法访问你的系统。此行中应该包含你的区域网路的前缀。例如,我的实验室网路运行在10.254.1.0/24上。因此我可以将10.或者10.254.或者10.254.1 放在"host allow"行中来允许我的网路中所有的机器来使用这个Samba系统。当然,我指定的网路地址越少,对于其他人来说,就有越多的机会来使用我的 Samba伺服器。
密码
要确保Samba系统正确运行的最后一步是要对每个用户帐户至少设定一个密码。由于在 Linux和Windows系统中保存密码的方式各不相同,所以对于SMB的密码资料库来说,你需要使用一个工具来进行管理。你可以在控制台提示中输入 "smbpasswd -a root"命令来实现这个目的。 在这种情况下,该工具将提示你对选定的用户输入密码,然后确认密码(这里假设是个根用户)。一旦完成这个过程,根用户就可以从一个Windows机器中连线到Samba的配置档案中指定的预设已分享档案夹。在这种情况下,根用户的 "home"目录以及一个选定的安装好了的印表机就已经可以使用了。
测试从Windows到Linux的连线
最快捷的测试激活Samba功能的Linux系统方法是:在同一个网路中寻找一个安装了Windows系统的机器。点击Windows系统中的"开始"选单中的"运行",在"运行"视窗中,输入两个反斜槓,后面紧跟你的装有Samba伺服器的IP位址。使用IP位址的目的在于消除你的网路中可能存在的域名解析方面的问题。如果你愿意的话,你可以使用机器的名字来测试,但是要注意的是这种使用名字的方法可能会无法实现你的测试目的。
此时系统应该会提示你输入用户名与密码。输入你在前面已经输入的根用户的名字和密码就可以了。此时你应该可以看到一个资料夹,该资料夹中包含一个名字为"root"的资料夹和一个名字为"Printers"的资料夹。即使在你的Samba伺服器上没有安装印表机,也会出现"Printers"资料夹。
如果没有出现输入用户名和密码的提示,这可能意味着你的Linux机器上的Samba伺服器还没有运行起来。你可以检查一下,以确认smbd进程确实已经启动,检查的方法是在命令行中输入"ps -ea | grep smbd"就可以知道该进程是否启动。如果没有返回任何信息,说明Samba进程可能会由于某种原因没有启动。你可以到"/var/log/samba" 目录下查看一下日誌档案,通过这些档案你可能可以找到导致进程没有启动的原因。
测试从Linux到Windows的连线
同样,从Linux系统中建立一个到Windows机器的连线也是非常简单的事情。第一步要确保你已经创建了一个挂载点来安装网路共享。例如,我用 "/mnt/smb"来进行测试。在你以根用户登录时,你可以在根驱动器下通过使用"mkdir /mnt/smb"命令来创建这个目录。
一旦完成了目录的创建,你就可以使用"mount"命令来载入网路共享。在这里,对于"mount"命令和Samba系统来说,有三个关键因素需要你注意。首先,档案系统类型是smbfs。这意味着你在"mount"命令行中必须指定"-t smbfs"。其次,在远程机器上的用户名最好不要和本地机器上的用户名相同,所以必须指定一个用户名。你可以使用一下的命令来实现:
-o username=domain\\user
需要注意的是,在"username(用户名)"中使用的是两个反斜槓来分离域名和用户名。之所以要这样,是因为命令行解释器将这两个反斜槓只解释为一个反斜槓。
最后,在用于共享的UNC路径中,Windows一般都是使用反斜槓。在UNIX命令解释器中,由于存在反斜槓的翻译问题,所以在"mount"命令中使用前向反斜槓。所以,最后的命令应该如下:
mount /mnt/smb //server/share -t smbfs -o username=MYDOMAIN\\Administrator
系统会提示输入你的密码,并且一旦你成功的输入了你的密码,你就可以通过你已经定义的挂载点来访问远程已分享档案夹中的档案,在本文中该资料夹就是"/mnt/smb"。
未来的方向
Samba 的支持并不是没有局限性。目前的Samba系统能够较好的和Windows2000和Windows XP客户端进行合作,但是它还没有完全集成到微软的活动目录结构中。这也是它的3.0版本所要实现的。虽然现在已经可以得到公开的Beta测试版本,但是在作者写作本文时,该版本仍在进一步研发中。 Samba系统的真正目的在于帮助简化混合作业系统环境中所存在的挑战。对于大企业来说,在已分享档案和共享列印的访问方面存在巨大挑战,而Samba系统的目的在于改变这种现象。