操作方法:了解 Mac OS X 开放目录

目录服务是任何企业环境的关键组件。这些服务为用户和计算机的中央帐户管理提供数据库,以及在工作站和服务器之间共享该信息的框架。 Mac OS X 的本机目录服务称为开放目录。

每台 Mac OS X 计算机都包含一个本地 Open Directory 数据库(称为域),用于存储有关本地用户帐户的信息。这个本地域允许每个用户拥有计算体验和主目录,本地域与文件系统一起管理文件和文件夹的权限。 Mac OS X Server 依赖共享的 Open Directory 域来提供可用于登录绑定到共享域的计算机的网络用户帐户。共享域还可以允许用户访问绑定到该域的其他服务器上的资源。共享域还允许系统管理员定义自定义用户环境。

Open Directory 是一个多部分体系结构,除了提供访问非本机目录服务平台(例如 Microsoft 公司的 Active Directory 和 Unix 网络信息服务服务器)的机制之外,它还执行任何目录服务的基本功能。它还具有管理 Mac OS X 对自我发现网络协议的访问的组件,包括 Apple Computer Inc. 的 Bonjour、Microsoft Corp. 的服务器消息块/通用 Internet 文件系统和开放标准服务定位协议。然而,当讨论 Open Directory 时,该短语通常指的是其作为 Mac OS X 的本机目录服务的功能。

NetInfo — 本地开放目录域

每台 Mac OS X 计算机(包括 Mac OS X Server)都有一个本地 Open Directory 域。该域存储有关本地用户的所有信息以及有关计算机本身的信息。 Mac OS X 的本地域是 NetInfo 域。 NetInfo 是一项专有目录服务,最初由 NeXT Computer Inc. 开发,最初用作 Mac OS X 的本机目录服务。随着 Mac OS X Server 的发展,Apple 用基于轻量级目录访问协议 (LDAP)(通常简称为开放目录)的服务取代了 NetInfo。

Mac OS X 计算机上的本地 NetInfo 域几乎不需要进行任何管理。但是,重要的是要了解本地域始终是 Mac OS X 计算机查找用户信息的第一个来源。同样重要的是要知道本地域在 Mac OS X Server 的工作组管理器中是可见的;这是用于管理用户、组和计算机帐户的工具。存储在服务器本地域中的用户和组帐户可以访问服务器上的资源,包括共享点、打印队列和 Internet 服务。但是,本地帐户不属于共享域,因此它们不能用于登录 Mac OS X 计算机。

共享域的搜索路径

Mac OS X 计算机可以绑定到多个目录域(Open Directory 和其他平台(例如 Active Directory)的域)。这需要建立一个搜索路径来定义在可用域中搜索帐户信息的顺序。这与 Windows 环境不同,在 Windows 环境中,可用域列表是登录对话框的一部分。如上所述,本地 NetInfo 域将始终位于 Mac OS X 搜索路径的第一位。但是,您可以按照您选择的任何顺序放置任何其他域。

搜索路径有多种用途。它们允许您为不同的用户和/或计算机组提供单独的容器。它们还允许您构建对多个目录服务平台的支持,可以混合和匹配每个系统的优点。例如,您可以依赖 Active Directory 中存储的用户帐户,但使用 Open Directory 中存储的帐户管理计算机,这使您能够利用 Apple 的客户端管理体系结构。搜索路径是强大的工具,但重要的是要认识到,如果搜索路径中的两个域中有同名的用户,则实际上只会找到搜索路径的第一个域中的帐户。

目录绑定

Mac OS X 计算机可以通过两种方式绑定到 Open Directory 域。第一个也是最简单的一个是动态主机配置协议 (DHCP)。 Mac OS X Server 可以包含有关域的信息以及其他信息,以响应计算机的 DHCP 请求。默认情况下,Mac OS X 将接受并使用 DHCP 接收的开放目录配置。这很有用,因为它节省了手动配置网络中每台计算机的时间和精力。

对于静态绑定,您可以使用“目录访问”实用程序配置对目录域的访问,该实用程序位于 Mac OS X 的“应用程序”文件夹内的“实用程序”文件夹中。目录访问包括可为 Open Directory 的每项功能进行配置的插件模块。例如,LDAP v3 插件管理 Open Directory 域配置和绑定。

搜索路径是通过使用“目录访问”中的“身份验证”选项卡来设置的。您可以选择使用自动搜索,其中包括 DHCP 提供的域和本地域; local-only,仅使用本地域;和自定义,允许您手动配置和设置可用域的搜索路径。您还可以使用“联系人”选项卡为 Mac OS X 的通讯簿应用程序设置域的 LDAP 搜索路径。

管理共享域

Mac OS X Server 支持四种 Open Directory 角色:独立、Open Directory 主服务器、Open Directory 副本和连接到目录系统。独立服务器仅依赖于其本地 NetInfo 域,通常不用作文件或打印服务器。 Open Directory Master 是托管共享域的服务器。

Open Directory 副本是托管域的只读副本的服务器。副本允许负载平衡并支持远程位置,在这些位置,网络链接速度较慢,无法直接访问 Open Directory 主服务器。副本还允许在主服务器发生故障时进行故障转移。

“连接到目录系统”是指绑定到共享域但不提供目录服务的服务器。用户可以使用共享域中存储的帐户访问连接到目录系统的服务器。通常,文件、打印和电子邮件服务器将使用此角色。然而,在较小的环境中,服务器除了作为 Open Directory 主服务器或副本服务器之外,还可能提供这些服务。

开放目录域依赖域名系统 (DNS) 来运行。因此,确保拥有功能齐全的 DNS 基础设施对于在网络中设置 Open Directory 至关重要。通常,开放目录故障可以追溯到 DNS 问题。简单地使用 Mac OS X Server 的“服务器助手”工具(该工具在基本安装后会自动运行)的陷阱之一是该助手为您提供了设置新的 Open Directory 域的选项。如果您设置的服务器将用作 Open Directory 主服务器和 DNS 服务器,这可能会导致问题。

尽管 Open Directory 在整体和各个域的结构方面都很复杂,但只要您事先正确设置了 DNS 和其他网络服务,Apple 就使设置过程变得极其简单。您只需从 Mac OS X Server 的“服务器管理”实用程序的弹出菜单中选择该角色,即可轻松地将现有服务器更改为 Open Directory Master。然后输入有关域的基本信息,包括对域具有管理权限的帐户、域的 LDAP 搜索库以及域将使用的 Kerberos 领域。

您还可以选择此时(或稍后)设置其他功能,包括默认域密码策略、计算机是否必须通过安全连接与域通信以及访问域的计算机是否必须与其绑定。所有这些选项都可以大大提高安全性。

设置副本服务器并将其他服务器绑定到域同样简单。当然,还有用于某些管理任务的更高级工具,其中许多是命令行工具,超出了本文的范围。但是,对于大多数环境,Server Admin 中的图形工具就足以启动并运行 Open Directory 基础结构。

Kerberos 和 Open Directory 密码服务器

Open Directory 提供了多种保护密码的机制。 Mac OS X Server 使用的原始机制是将密码存储为用户帐户对象的属性。此功能称为“基本密码”,并且仍然支持向后兼容旧版本的 Mac OS X 和 Mac OS X Server,但必须为每个用户帐户选择它作为特定选项。

基本密码以加密形式存储和传输。但是,由于基本密码存储在 Open Directory 域中,因此很容易受到使用 Workgroup Manager 或命令行 Open Directory 工具的脱机安全攻击。

Open Directory 还提供默认的 Open Directory 密码类型。此技术将用户密码存储在域本身之外的两个位置。第一个是在 Kerberos 领域中。第二个位于 Open Directory 密码服务器数据库中。

两者都提供增强的安全性,因为密码仅被设置和验证,而 Open Directory 永远不会实际读取。使用这些密码类型时,只有标识用户密码在 Kerberos 领域或 Open Directory 密码服务器中位置的散列信息才会物理存储在用户记录中。

默认情况下,当服务器设置为 Open Directory 主服务器时,它也会设置为 Kerberos 密钥分发中心 (KDC)。这使得 Mac OS X Server 成为最容易设置为 KDC 的平台之一,因为该过程几乎完全自动化。还可以使用备用 KDC — 包括 Active Directory 域控制器,这在多平台环境中很有帮助。

除了保护密码存储之外,Kerberos 还为用户连接提供了重要的密码安全性,因为它依赖票证来授权访问网络中的任何“Kerberized”服务。因此,用户的密码仅在用户首次登录时传输。

Kerberos 还提供了一个无缝的单点登录环境,用户在连接到服务器并浏览 Kerberos 服务时不会重复要求进行身份验证。在 Mac OS X Server 下,这些 Kerberized 服务包括 Mac OS X 登录窗口、电子邮件、Apple Filing Protocol 和用于 Mac 和 Windows 文件/打印机共享的服务器消息块协议、虚拟专用网络、文件传输协议服务、Apache 和 Secure Shell 访问。

由于 Mac OS X Server 使用标准 Kerberos 安装,因此您可以使用其他平台(包括 Unix)的服务器和客户端在网络中提供其他 Kerberos 服务。 Telnet 和 Rlogon 是现在可以与 Kerberos 一起使用的 Unix 服务的两个示例。

Open Directory 密码服务器非常适合无法选择 Kerberos 的情况。这对于不支持 Kerberos 的应用程序和服务以及出现 Kerberos 故障时非常有用。 Open Directory 密码服务器支持广泛的标准加密类型,以便与各种平台和服务进行交互。尽管它不提供 Kerberos 的安全和单点登录优势,但 Open Directory 密码服务器提供了比基本密码好得多的可靠安全性。

默认情况下,当用户的密码类型设置为 Open Directory 时,Open Directory 将首先尝试使用 Kerberos 对用户进行身份验证,并且仅在 Kerberos 不可用的情况下使用密码服务器。

托管客户端环境

Open Directory 提供了丰富的托管客户端环境,可用于保护和定义所有用户和计算机的用户环境。事实上,Mac OS X 用户体验的每个方面都可以为新用户预设,也可以永久定义以使其无法修改。

在运行相同 Mac OS X 版本的计算机上使用 Mac OS X Server 10.4 (Tiger) 时,还可以创建首选项清单。这些 XML 文件可用于定义几乎任何 Mac OS X 应用程序的首选项设置。 Mac OS X 下的托管首选项可以针对个人用户、组或计算机列表进行设置。

与其他目录服务平台集成

Active Directory 集成通常是最简单的,对于 Mac OS X 计算机和 Mac OS X Server 有多种简单的集成方法。除了 Active Directory 之外,Open Directory 还可以与几乎所有基于 LDAP 或支持 LDAP 查询的平台集成。事实上,Open Directory 和 Active Directory 之间的真正集成通常是使用 LDAP 完成的。

集成目录服务平台通常首先修改所涉及平台的架构,以便能够支持构成 Open Directory 架构的附加对象和属性。通常,开放目录架构也会被修改以适应其他平台的需求。通过支持附加信息类型,不仅可以在平台之间执行查询,还可以存储特定功能的数据,例如托管首选项。虽然这是一项艰巨的任务,但在需要针对不同类型系统的广泛解决方案的大型环境中,回报是值得的。

托管 Windows 域

对于那些需要支持 Windows 工作站身份验证的环境,Open Directory 可以托管 Windows NT 样式的域。在这些场景中,Open Directory 主服务器充当主域控制器,副本充当备份域控制器。此设置并不总是完美的,并且托管域不是 Active Directory 域。但是,它确实提供身份验证并允许托管主目录和 Windows 配置文件。而且它在许多环境下都能很好地工作。

Ryan Faas 是一位自由撰稿人和技术顾问,专门研究 Macintosh 和多平台网络问题。除了写作之外计算机世界,他是一个经常贡献者 InformIT.com。瑞安还是以下书的合著者 (O'Reilly Media,2005)您可以在以下网址找到有关 Ryan、他的咨询服务以及最近发表的作品的更多信息: www.ryanfaas.com,您可以给他发电子邮件: 瑞安@ryanfaas.com