文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>通用线程:Samba 简介 第一部分

通用线程:Samba 简介 第一部分

时间:2007-02-17  来源:PHP爱好者

关键概念

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 口令散列不兼容了。换句话说,Samba 没有办法使用标准 Unix passwd 散列来验证 Windows 加密的口令是否正确。幸运的是,Samba 提供了许多方法来将这两个数据库同步,这样系统管理员的日子就好过多了。

从 Unix 方看到的 Samba
现在我们已经从 Windows 方了解了 Samba,该从 Unix 方来看 Samba 了。首先是一些常规信息。 Samba 的主要网站是 http://fi.samba.org,Samba 的当前产品版本是 2000 年 4 月 25 号的 2.0.7,在这一系列文章中我们将使用这个版本。因为有些人会从 RPM 安装 Samba,另一些人会尝试让 Samba 在 FreeBSD 或 Solaris (而非 Linux)下运行,又有许多人会从头开始编译 Samba,所以在文件位置上很可能有很多变数。(Samba 的缺省文件位置可以在编译时配置。)在某些系统上,特定的文件会在 /usr/local中,而在其它系统上,它们会在其它地方。我将按文件名来引用配置文件(而不是按它们的完整路径)来避免任何不一致。

如果您从原始源码中编译和安装 Samba,可以在 /usr/local/samba/etc/smb.conf 中找到 Samba 的配置文件。但如果您从二进制 RPM 或另一种 Linux 软件包格式安装软件,就很可能在 /etc 中找到 smb.conf。这些都会很快造成混乱。为使事情简化,我复查了从源码中编译 Samba 时文件的位置,并确保每个文件都安装到 /usr/local/samba 中它的缺省位置。请注意,这一部分的目的只是让您熟悉 Samba 的 Unix 方的配置,并不想带您一步步地完成编译进程,这一内容将在下一篇文章中论述。刚才我们只是让您热热身!在全新的 Samba 编译和安装后,文件的缺省位置如下:

/usr/local/samba/bin
包含所有 Samba 二进制可执行文件

在 2.0.7 中,主要 Samba 可执行文件称为 smbd 和 nmbd。Smbd 设计为提供 SMB/CIFS 文件共享服务,而 nmbd 通过对 NetBIOS 名利用 IP 地址查找来执行与 WINS 相关的功能。还有一些其它实用程序,包括 smbclient(一个类似于 ftp 的工具,可用来与 SMB/CIFS 共享连接和交互),以及 testparm(一个方便的实用程序,通过检查来确保 Samba 的主要配置文件的语法正确)。

/usr/local/samba/etc
包含 smb.conf,主要的 Samba 配置文件

Smb.conf 是一个非常重要的文件,包含几乎所有 Samba 的配置选项。在这个文件中,您可以找到控制全局 Samba 功能的设置,还有启用特定目录树和打印机共享的配置选项。在获得使用 Samba 的经验的同时,您也将用额外的配置选项(对 Samba 进行微调来适应特定位置)来补充 smb.conf 文件。

对 Samba 最主要的一个抱怨是 smb.conf 文件有相当高的学习曲线。虽然这是事实,但请记住, Samba 不只是一个简单的网络文件共享程序。它负有将两个完全不同的系统(Windows 和 Unix)进行明智集成的责任。有时配置进程看起来很难对付,但不要怕。只要您能让每件东西都能很好地发挥作用,所有努力就都值得了!

/usr/local/samba/private
包含 smbpasswd,Samba 的加密口令文件

安全性注意事项
在 smb.conf 中,可以将 Samba 配置为只侦听特定网络接口上的连接,或只接受来自特定子网或 IP 地址的连接。这些方法可以用于更进一步加强安全性。

我在前面提到过 Samba 有自己的口令存储器,它是与标准 Unix passwd 数据库不同的。在 smbpasswd 文件中, Samba 存储了所有允许访问 Samba 共享的用户和工作站(以及它们相关的口令)。可以进一步对特定用户和组锁定个别的共享。要修改 smbpasswd 文件,使用名称相同的二进制可执行文件 smbpasswd。

/usr/local/samba/var
包含 Samba 的两个日志文件,log.smb 和 log.nmb

可能您已经猜到,log.smb 是 smbd 的日志文件,而 log.nmb 是 nmbd 的日志文件。

/usr/local/samba/swat
包含用于 SWAT(Samba 的 Web 管理工具)的文件

SWAT 是 Samba Web 管理工具,是灵巧的小 Web 应用程序,可以让管理员远程管理他们的 Samba 网络。我们在这一系列文章中不涉及 SWAT,但您可以在 SWAT 的主页上找到有关 swat 的详细信息(见参考资料)。

下一步
我们已介绍了许多 Samba 的关键功能和概念。还了解了 Samba Unix 方的文件结构概述。在下一篇文章中,我要带您完成在自己的系统上设置 Samba 的过程。本文的重点集中在概念上,下一篇文章与本文不同,它将侧重于 HOWTO 风格。我们已介绍完了关键概念,现在开始步伐要加快了。再见!

参考资料

主要的 Samba 网站
Amiga Samba 邮件列表
Ed Weinberg 撰写的 Samba
Samba Unleashed,Steve Litt 著,其中包含 Daniel Robbins 的投稿
Using Samba (O'Reilly Publishing; 1999)
有关 Samba 和 Redhat 的 Samba 注意事项
Samba/iX: MPE/iX 6.0 上的 Samba 支持
SWAT 主页
威斯康星大学的 GhostScript

关于作者
Daniel Robbins 居住在美国新墨西哥州的阿尔布开克。他是 Gentoo Technologies, Inc. 的总裁/CEO、 Gentoo Project 的主创人、由 MacMillan 出版的几本书(包括 Caldera OpenLinux Unleashed、SuSE Linux Unleashed 和 Samba Unleashed)的投稿人。Daniel 自小学二年级起就与计算机结下不解之缘,那时他首先接触的是 Logo 程序语言,并沉溺于 Pac-Man 游戏中。 这也许就是他至今仍担任 SONY Electronic Publishing/Psygnosis 的首席图形设计师的原因所在。 Daniel 喜欢与妻子 Mary 和他们的女儿 Hadassah 一起共渡时光。可通过 [email protected] 与他联系。
非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载