IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux  >

Samba 2.2 内幕

新型、改进过和为企业准备

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Daniel Robbins (drobbins@gentoo.org), 总裁兼 CEO, Gentoo Technologies, Inc.

2001 年 4 月 01 日

在本文中,Daniel Robbins 阐明了 Samba 2.2 如何在已经十分完善的 Samba 2.0.8 的基础上加以改进,从而创建极其强大的为企业准备的 Unix/Windows 集成解决方案。新的 Samba 2.2 提供了许多新的改进,包括 Windows 2000 客户机和 Windows NT 域控制器支持,而这些只是其中的一小部分。

您可能和我一样都非常清楚 Samba 这种自由软件中特定部分所具有的惊人重要性。多年来,我们当中曾有许多人勇敢地使用 Samba 将 UNIX 和 Windows 系统集成到一个统一的联网环境中。我们成功配置了 Samba 2.0.x,以便为 Windows 机器提供文件服务和处理打印作业,甚至认证 Windows 登录。我们当中的某些人曾幸运地使 Samba 2.0.x 发挥 Windows NT“主域控制器”(PDC) 的功能,允许 Linux 或 UNIX 服务器充当整个 Windows NT 域的中央控制点。的确,最近几年,Samba 2.0.x 系列允许我们执行许多以前被认为是不可能的惊人操作。

Samba 2.0.x:近乎完美

当然,如果您熟悉 Samba 2.0.x 系列,您也应该知道 Samba 有自己的一些局限性。Samba 2.0.x 老手都知道,成功安装 Samba 的关键在于清楚地了解这些限制并对这些限制采取变通操作。只要使用适当,Samba 就是一种非常可靠的解决方案,往往远比 Windows NT 本身可靠得多。不过,如果您使用了 Samba 不太稳定的特性之一,就很可能给自己制造麻烦。在过去的几年中,正是这些弊端使得 Samba 2.0.x 只是一种 近乎完美的 Windows/Unix 集成解决方案。

2.0.x 中的弊端非常多。例如,Samba 2.0.x 所具有的用户级安全性适合于 Windows NT,但对 Windows 95 却不那么合适。并且 Samba 的 oplock 实现总是成问题。Oplock 是一种精密的锁定机制,它是 SMB 协议的一部分,用于动态地改进文件共享性能。

不过,2.0.x 中的 oplock 有一个问题;它们只能在您从 Windows“一方”通过 SMB 共享独占地访问文件时才能正确工作。为什么? 因为 Linux 和 Samba 的文件锁定和高速缓存机制相互之间是独立的,意味着如果从 Linux 控制台修改了文件,这些更改可能要花费几分钟的时间才能在 Windows 一方反映出来。对许多人来说,这表明必须禁用 oplock 才能避免数据毁坏和文件共享问题。而这并不是一个很好的解决方案。





回页首


请提供 NT PDC 支持!

如果您非常不幸地成为争取使用 Samba 作为 Windows“主域控制器”大军中的一员,那么事情就更糟糕了。过去四年中,Samba 曾有过一些作为 Windows NT 域的域控制器的能力;但问题是这项功能总是有许多错误,并且不完整。可惜,Samba 2.0.x 的 PDC 能力总是不尽如人意,直到最近(随着 2.0.7+ 版的发布)Samba 用户才能使用基本 PDC 功能,但仍然摆脱不了它的弊端。

虽然 2.0.7+ 中的域登录和浏览概要似乎工作起来很顺利,但 Windows NT 管理工具还是有许多问题。不错,您可以向本地组添加 Samba 域用户,但下次在“用户管理器”中查看时,用户就会列为“未知用户”。而且即使从 Samba 的角度来看,几乎其它任何基于 Windows NT 的管理工具也都会失去效用。如果您问 Samba 开发人员这些特性何时能够实现,他们往往会回答说“我不知道”,“可能一年左右吧”,“别问我了”或者“请别烦我”。让人有些灰心。





回页首


隧道尽头的光明

尽管如此,Samba 2.0.x 仍是个了不起的软件成就。不过,只有部分功能可供企业使用;其余功能虽然有趣,但是我们只能期待有一天这些特性能够真正发挥作用,让我们可以非常轻松地将 UNIX 机器集成到几乎所有类型的 Windows 网络中。Samba 2.0.x 对于需要修补、测试和调整才能正常运行的程序是一个优秀的工具。当然,本文的重点不是数落 Samba 2.0.x 中的缺陷,而是要说明在新的 Samba 2.2 中,所有这些问题都得到了解决。





回页首


Samba 2.2 概述

Samba 2.2.0 是 Samba 开发过程中一个重要的里程碑,它包含了许多改进和新增特性,涉及程序几乎每个方面。Samba 2.2.0 发行版特别为 Linux 用户提供了许多好处;有一些新的特性利用了新的 Linux 2.4 功能,或者使用了可以通过内核补丁启用的特性。让我们看看 Samba 2.2 中一些主要的改进和新增特性。

内核 oplock
Samba 2.2 包含了内核 oplock 支持,允许 Linux 2.4 和 IRIX 系统向外部世界提供一致的文件系统视图,而无论是从本地,还是通过 SMB 共享,甚至通过 NFS 进行的访问。我在前面提到过,这是在 Samba 2.0.x 中不可能实现的功能。使用 2.0.x,如果希望文件系统在 Linux 控制台和 SMB 共享之间保持一致的话,需要将以下几行内容添加到 smb.conf 文件中:

   level2 oplocks=no
    oplocks=no

这可以解决问题,但会减低性能。而现在,如果将 Samba 2.2 和 Linux 2.4 或 IRIX 一起使用,这个问题就可以迎刃而解。因此,无论您的用户是通过控制台、X、Samba,还是 NFS 访问数据,他们总是可以看到相同的数据,并能得到最佳的 Samba 性能。

Windows NT/2000 集成
Samba 2.2 现在能够顺利地处理 Windows 2000 客户机。除此以外,Samba 2.2 现在还能仿真“Windows NT Server 域”管理职责中几乎每个方面。是的,这意味着它可以执行所有重要的操作,例如,成为 Windows NT 域中的“主域控制器”、根据其安全性数据库认证 Windows 95/98/NT/2000 用户,以及支持浏览概要、登录脚本和系统策略。所有这些特性如今都能够可靠地工作。

事情远不止这样。许多与 NT 域相关的弊端现在都得到了改正。例如,基于 Samba 2.0.7 的“主域控制器”设置一切正常,但即使是从 Samba 服务器的一方来看,几乎所有基于 Windows-NT 的管理程序都无法使用。

将 Samba 用户集成到现有 NT 安全性数据库也象噩梦一样。例如,我曾遇到过的一个问题是,使用“用户管理器”来向 Windows NT Workstation 上的本地组添加 Samba 域用户后,在下一次启动“用户管理器”时,该用户居然显示成“未知用户”。 象这个样的弊端还有很多,这些弊端使得 Samba 2.0.x 不适合作为企业 PDC 使用。而现在,所有这些问题在 Samba 2.2 中似乎都得到了改正。使用 2.2,甚至有可能使用“域用户管理器”查看所有“Samba 域”帐户和组,下面的快照显示了这一功能:


使用“域用户管理器”来查看 Samba 2.2 域:前进一大步!
使用“域用户管理器”来查看 Samba 2.2 域

现在,“用户管理器”中所有数据都是只读的,但读写支持正在开发中,预计会在 2.2.x 系列期间的某个时间出现。

其它主要改进
与 2.0.x 系列相比,Samba 2.2 的性能更是提高了许多,这要归功于使用了内部数据库结构而不是过度依赖于“平面”数据结构。Samba 现在可以充当 Microsoft DFS(分布式文件系统)服务器使用。它具有增强的文件锁定代码,并支持一种特殊的“概要”性能分析运行方式。

除了所有这些以外,Samba 2.2 支持全部的 Windows 打印机支持(95/98/NT 2000),目前甚至支持自动 Windows 驱动程序下载特性。这意味着您可以使用 Samba 作为所有 Windows 机器的打印服务器,而无需担心组织中使用的 Windows 的版本。

总而言之,这些改进意味着 Samba 2.2 是真正为企业准备的 -- 即使对于最具挑战性的任务来说。现在绝对有可能(也非常需要)使用 Samba 作为由 Windows 95、98、NT 和 2000 机器构成的网络的“主域控制器”。与 2.0.x 不同,您不必担心特定于 Windows 95、NT 或 2000 Samba 弊端。总之,Samba 2.2 应该可以使工作简单有效。





回页首


新增特性

除了我已经介绍的一些新特性以外,还有其它一些特性正处于集成到 Samba 2.2 源码树和 Linux 2.4 自身的过程中。让我们看一下它们。

Winbind
Winbind 是一种特殊的系统,它允许 Windows NT 域用户和组看上去自动出现在 Linux 下,而且还允许 Linux 服务根据 Windows NT 域来进行认证。Winbind 对于将 Linux 机器集成到现有的 Windows NT 域中特别有用。这项功能对于需要集成到现有 Windows NT 安全性基础设施的基于 Linux 的网络应用来说具有相当大的帮助。在 Linux 下,NT 用户名将以 "DOMAIN\user" 出现,和所有域组一样。

Winbind 并没有完全包含在 Samba 2.2.0 发行版中(它目前包含在 Samba 的一个试验版本中),但它现在正在发挥作用,并且希望能在 2.2.1 中出现。目前来说,它是只能在 Linux 上使用的特性,通过与 PAM(可插入认证模块)和 NSS(名称服务开关)进行集成来工作。

ACL 支持
Samba 2.2 另一个不可思议的绝妙特性是对访问控制表 (ACL) 的新支持。你们当中许多人都知道,Windows NT 和 2000 使用 ACL 来设置对文件和目录的许可权,与大多数 UNIX 系统所使用的传统“一个用户一个组”的解决方案相比,它们提供的对许可权的控制更为细密。以前,Samba 没有办法直接将 ACL 存储在文件系统上,因为那时还没有可用的 Linux 的 ACL 支持。 但现在,我们开始看到了 ACL 支持的开端 -- 当前有 Linux 内核 2.4.3 的 ACL 内核补丁可用(请参阅下面的 参考资料),以及一些用户空间工具。ACL 支持目前在 Samba 2.2.0 中得到了完全支持。

尽管 Samba 2.2.0 支持 ACL,但目前在内核和文件系统中启用 ACL 支持时还是需要许多棘手的步骤。因为标准 ext2 文件系统无法存储 ACL 信息,所以需要首先安装支持 ACL 的特殊 ext2 版本;这将对内核进行修补和重新编译,并升级系统上的所有 ext2 实用程序。

不过,如果您执行了所有这些操作, 可以在 Linux 上使用 Samba 的 ACL 支持。设置完毕后,Samba 将保留 NTFS ACL,而不是将 ACL 许可权映射成不太灵活的标准 UNIX 许可权方案。 这是件好事。设想一下:与 winbind 结合在一起的 ACL 支持将允许基于 Linux 的系统“吸收”Windows NT 用户、组 ACL 许可权。非常惊人的成就!

但现在,Linux 下的 ACL 支持还处于初级阶段。几乎每个备份程序都 备份 ACL 信息,意味着除非采取一些特殊手段,否则将很容易丢失 ACL。当然,ACL 支持在文件系统级别上几乎不存在(只有修补过的 ext2 版本和当前提供 ACL 支持的 SGI 的 XFS -- 请参阅下面的 参考资料)这一事实使得用 ACL 支持 Linux 系统成为一项非常艰难的任务。 不过,因为 Linux 发行版最终在缺省情况下将启用 ACL,这一过程也将变得越发容易。



参考资料

下列参考资料有助于您了解有关这一新的、重要的 Samba 发行版的详细信息:



关于作者

作者

Daniel Robbins 居住在美国新墨西哥州的阿尔布开克,他是 Gentoo Technologies, Inc. 的总裁兼 CEO、 Gentoo Linux(用于 PC 的高级 Linux)的创始人,以及 Portage 系统(Linux 的下一代端口系统)的创始人。 他是由 Macmillan 出版的几本书: Caldera OpenLinux UnleashedSuSE Linux UnleashedSamba Unleashed 的投稿人。 Daniel 自小学二年级起就与计算机结下不解之缘,那时他首先接触的是 Logo 程序语言,并沉溺于 Pac-Man 游戏中。这也许就是他至今仍担任 SONY Electronic Publishing/Psygnosis 的首席图形设计师的原因所在。Daniel 喜欢与妻子 Mary 和他们的女儿 Hadassah 一起共渡时光。可以通过 drobbins@gentoo.org 与 Daniel 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款