标题：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系统的目的在于改变这种现象。