关键概念
Daniel Robbins
总裁/CEO,Gentoo Technologies, Inc.
内容:
演示 Samba
Samba 打印
Samba 共享
浏览网络
Samba 安全性
从 Unix 方看到的 Samba
下一步
参考资料
关于作者
对于所有既使用 Unix 又使用 Windows 的人来说,Samba 是一种了不起的工具。通过实现 Unix 的 SMB/CIFS 协议,Samba 可以让 Unix 系统与标准 Windows 客户机一起共享资源。在这篇介绍性文章 -- Daniel Robbins 为 developerWorks 提供的新专栏系列的第一篇文章中,他将介绍 Samba 能够做什么。本文着重介绍关键概念。(在下一篇文章中,他将指导您完成安装过程。)读完本文之后,您将清楚了解 Samba 可以做些什么,以及它是如何工作的。
欢迎来到“通用线程”部分,developerWorks 上 Linux 专区的一个新专栏。每隔两星期,我会为您带来一些文章,这些文章将深入探讨影响 Linux 和开放源码世界的技术。这一专栏从有关 Samba 的三部分系列开始, Samba 是用于集成 Windows 和 Unix 的领先技术。我将告诉您 Samba 是如何工作的,以及如何在您的系统上配置并运行它。
在以后的文章中,我会涉及到例如多线程等一些热门话题,还会提供有关一些准备震撼计算世界的新兴技术的内幕介绍。常回来看看 -- 别错过任何一篇文章!
演示 Samba
首先,我要显示一组屏幕快照,它们来自我的一台名为 kompressor 的 Windows NT 机器。这些屏幕快照演示了从 Windows 方看到的一个完整配置的 Samba 系统。它们会带给您 Samba 功能的一个实际理念。
当前在我的内部 LAN 中设置了三台机器。
ntbox (Windows NT 工作站)
freebox (FreeBSD 服务器)
kompressor(Windows NT Workstation,用作我的主要台式机)
在这个环境中,我广泛使用 Samba 来共享文件、打印,甚至直接从 freebox (Unix) 运行 Windows 应用程序。有一个屏幕快照显示了 kompressor “网络邻居”的内容:
kompressor 的“网络邻居”
您可以看到,ntbox 和 kompressor 都是可见的,这并不奇怪,因为它们都是 NT Workstation。但不同寻常的是,我同样能看见 freebox。因为 freebox 运行的是 Samba,所以在属于 \"GENTOO\" Windows 工作组一部分的每台 Windows 机器上“网络邻居”下面我都能看到它。
现在我们可以看看 freebox “内部”是什么样子。双击 freebox 图标后弹出下面的窗口:
freebox 上的 SMB/CIFS 共享
字首组合词释义
SMB 代表的是服务器消息块 (Server Message Block),它是用于在 Windows 上共享文件的协议的原始名称。 CIFS 代表公共 Internet 文件系统 (Common Internet File System),它是 Microsoft 描述该协议最近一个版本的新字首组合词。
在这个窗口中,您可以看到一组我们称之为“共享”的东西。更具体来说,它们叫作 SMB/CIFS 共享,包含 freebox 文件系统中可以通过网络访问的那些部分。
在 freebox 上,Samba 经过了特别配置,可以只创建您在上面看到的那些特殊共享。drobbins 共享包含了主目录的内容。我喜欢将所有文件存储在 freebox(在 Unix 下)上,以使文件集中,易于管理。Samba 的一个好处是它可以让管理员将用户文件的存储器集中,而不是为每个用户都对 Windows 和 Unix 提供两个单独的文件位置。
Samba 打印
除标准共享(作为虚拟目录)外,您还可以看到名为 nec 的打印机共享。Samba 另一个非常重要的功能就是,您可以使用从任何 Windows 机器共享打印机的相同方式来共享打印机。Nec 是我的 NEC SuperScript 870 激光打印机,它与 freebox 相连,并设置成标准的 Unix 基于 lpd 的打印机。Samba 可以让这个打印机由 Windows 客户机使用,如同标准 Windows 网络打印机那样。
因为打印机是在 Unix 下运行的,您可能会奇怪打印机驱动程序的状态要如何处理。问的不错。在 freebox 上, nec 设置为以“raw(原始)”方式运行的基于端口的标准并行打印机。换句话说,任何发送给 nec 的打印作业都直接照原样传递给打印机,不进行任何过滤或数据处理。
在 kompressor 上,nec 配置成 NEC SuperScript 870 网络打印机。当我打印到它时,本地 NT 打印机驱动程序为 nec 生成相应的二进制数据,然后,自动在网络上假脱机到 freebox 上运行的 Samba。 Samba 自动将这些数据不加更改地插入 nec 的队列,打印机开始打印作业。
应该说明一下,我的 NEC SuperScript 870 不是 Postscript 打印机;它使用 Adobe 的专利 PrintGear 技术。虽然打印机在 Unix 上不是完全受支持,它仍能很好地处理来自 Windows 的打印(这是因为所有特定于打印机的数据都是在 Windows 方使用 Windows 驱动程序生成的)。具有讽刺意味的是,因为 GhostScript(一种可用于 Unix 的免费使用的与 PostScript 兼容的解释器)不知道如何产生 PrintGear 输出,我只能从 Unix 方打印 ASCII 纯文本或 300 dpi 基于 PCL4 的文档;但从 Windows 方,Windows NT 驱动程序可以让我打印十足的 600 dpi。现在我不认为这会不方便,因为我的大部分打印都是从 Windows 进行的。但以后最好能有内置 Postscript 的打印机,这样我也能从 Unix 使用打印机的全部功能。
Samba 共享
好,现在该看下一个屏幕快照了。这个屏幕快照说明 freebox 上 drobbins 共享的内容,它配置为共享我的 Unix 主目录。窗口中列出的所有文件实际上都位于 freebox 中,但可以直接从我的 Windows NT 客户机访问。能够将 Windows 和 Unix 集成真是太好了!
从 kompressor 访问到的 freebox 上我的主目录
理解 Samba
为向您介绍有关 Samba 内部是如何工作的更详细的信息,我要给您一个非常简化的说明,告诉您当我在“网络邻居”中四处摆弄时在后面发生了什么事。首先我应该说明一下当前 Windows 会话的一些情况。因为我运行的是 Windows NT Workstation,所以必须进行登录才能获得对机器的访问。对于这个 NT 会话,我登录到本地机器时使用的用户名是 \"Administrator\",口令是 \"mypass\"。如果我运行的是 Windows 95 或 98,标准 Windows 联网驱动程序就会要求我输入用户名和口令。在 Windows 95 和 98 中,这个口令实际上不用于确定谁可以访问本地机器,而是被高速缓存,用于与网络资源连接。
当然,Windows NT 相对于 Windows 95 和 98 是非常安全的,如果您不提供有效的用户名和口令,就不允许您使用机器。在 kompressor 对照它的本地安全性数据库确认了我的用户名和口令后,就允许我开始使用 Windows。在我连接到受口令保护的网络资源时,Kompressor 还将使用我的用户名和口令来尝试自动认证自己。
浏览网络
当我在“网络邻居”上单击时,会弹出一个窗口,包含网络上所有与 Windows 兼容的机器的列表。为使这个操作发生,kompressor 与幕后的 freebox 联系,以获得当前子网上所有与 Windows 兼容的机器的“浏览列表”。 Kompressor 与 freebox 联系是因为我配置了 freebox 的 Samba,这样它就可以成为网络上的“本地主要浏览器”(这意味着 freebox 管理着出现在“网络邻居”中的网络资源的列表)。
我做的下一件事是双击 freebox,将出现一个新的窗口,并显示 freebox 上的所有共享。为使 kompressor 能够接收这些信息,它作为 guest 用户与 freebox 上特殊的隐藏共享(称为 IPC$)连接,并下载所有可用共享的名称和类型。在下一篇文章中,当我们配置 Samba 时,需要把一个选项放入 Samba 的配置文件中,指定哪个 Unix 帐户等价于 NT 的 \"guest\" 用户。如果它没有正确设置,您就不能浏览 Samba 机器上的任何资源。因为它显示您不需要任何特殊许可权就能查看 Samba 服务器上的 SMB/CIFS 共享,所以出于安全性目的,这也值得一提。
现在我可以单击 drobbins 共享来显示主目录的内容。当它不慌不忙自动发生时,有必要理解 freebox 和 kompressor 之间隐藏的对话,这个会话最终授予我对 drobbins 共享的访问。但在我们到达那一步之前,先讨论一些 Samba 安全性事项。
Samba 安全性
当配置 Samba 时,我设置了 drobbins 共享是用口令保护的;即使是在自己专用的 LAN 上,我仍然希望将有些东西锁定到某种程度。与此同时我设置了两个 Samba 用户:drobbins 和 administrator。将它们的口令设置为与我 NT Workstations 上的口令匹配以达到一致。对于 drobbins 共享,我的安全性策略如下:如果您是有效的 Samba 用户,并为该用户提供了正确的口令,就允许您访问 drobbins 共享。所以,administrator 和 drobbins 都被授予访问权,只要用户为它们的帐户也提供正确的口令。
现在,让我们回到 freebox 和 kompressor 之间的对话。因为我是作为 administrator 登录的,所以双击 drobbins 共享会导致 Windows NT 通过将用户名 \"administrator\" 和口令 \"mypass\" 发送给 freebox 来自动尝试向 Samba 认证我。然后,Samba 对照它的内部安全性数据库(它与标准 Unix passwd 数据库区分开)来检查这些值,从而验证用户名和口令。在看到用户名/口令组合被检出后,Samba 授予我访问权。
您可能会奇怪为什么 Samba 有它自己独特的口令数据库。为什么它不使用标准 Unix 口令来认证 administrator 用户呢?当 Windows 发送以明文表示的口令时,它过去可能这样做,但所有现代版本的 Windows 都以加密形式发送 SMB/CIFS 口令,这样就与标准 Unix 口令散