http://www.ibm.com/developerworks/cn/linux/l-lpic3-310-1/
概述
在本文中,学习以下概念:
- Server Message Block (SMB)/Common Internet File System (CIFS)
- 文件共享
- 打印服务
本文帮助您准备 LPI 的 Mixed Environment 特性考试(302)的主题 310 下的目标 310.1。该目标的权值为 1。
先决条件
为了最有效地利用本系列中的文章,您应该具有高级 Linux 知识,并需要准备一个 Linux 系统,用于练习本文介绍的命令。另外,您应该能够访问一个用于测试文件和打印访问的 Windows 环境。
回页首
文件和打印共享
关于可选的 LPI-302 考试
与其他许多认证一样,Linux Professional Institute Certification (LPIC) 提供多个不同级别,每个级别都比前一个级别要求更多知识和经验。LPI-302 考试是 LPIC 层级的第三级中的一个可选特性考试,要求具有高级 Linux 系统管理知识。
要通过 LPIC 级别 3(LPIC-3)认证,您必须通过前两个一级考试(101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试(301)。到达这个级别后,才能参加一些可选特性考试,比如 LPI-302。
文件和打印共享的目标是支持计算机使用其他计算机上的磁盘和打印机,就好像它们是本地连接的一样。这个功能允许更多人使用相同的昂贵资源并从任意位置访问那些资源。作为中央资源,文件和打印机可能被更严格地控制和审计,如果需要的话。
一个文件和打印共享解决方案的理想属性包括:
- 此解决方案应该是网络独立的 — 即,独立于它在其上运行的网络类型(以太网、令牌网)。
- 应用程序应该不需要知道它们访问的是本地磁盘上的文件还是远程磁盘上的文件,也不需要知道它们正在打印到本地打印机还是远程打印机。
- 应该有一些方法来协调对同一个资源的多个同步请求,比如两个人想要同时打印到同一台打印机。
- 此解决方案应该实现某种类型的身份验证系统来理解谁正在请求一个资源,并实现一个授权系统来决定是否向其授予访问权。
构建您自己的提要
您可以构建一个 RSS、Atom 或 HTML 提要,以便在我们添加新文章或更新内容时收到通知。访问developerWorks RSS 提要。选择 Linux 作为专区,Articles 作为类型,输入 Linux Professional Institute
作为关键字。然后选择您想要的提要类型。
有几种方法可以共享文件和打印机。许多 UNIX 工具,比如 Berkeley 打印系统,从上世纪 80 年代初期起一直具有网络意识。Sun Microsystems 于 1984 年引入了 Network File System (NFS),NFS 允许 UNIX 计算机通过网络装载文件系统。IBM 和 Microsoft 使用 SMB 协议来执行许多网络共享任务,包括共享文件和打印机。文件和打印共享可以通过专用服务器、单独的工作站或者二者的结合来执行。
文件共享
即使是从工作站共享文件,拥有用于共享的磁盘资源的设备也称为服务器,访问磁盘的设备称为客户端。服务器用于导出文件系统(UNIX 术语),或者共享磁盘和目录(Windows 术语)。然后,客户端将文件系统装载为一个本地磁盘或连接,以便共享。
共享关系的性质可以是临时的,也可以是长期的。客户端可以连接到服务器,获取几个文件,然后断开连接;客户端也可以一直保持连接,直到重新启动。客户端可以将远程文件系统视为一个本地磁盘或本地文件系统的一部分;它也可以选择在应用程序层访问资源,就像 File Transfer Protocol (FTP) 客户端所做的那样。
文件共享的另一个相关特性是概念浏览(browsing)。浏览允许客户端找到网络上的服务器 — 通常从一个动态填充的列表。
打印共享
打印机可能没有直接连接到服务器,因此可能出现多种级别的共享。当多个客户端都配置同一台打印机时,它们通常通过一个名为后台处理程序(spooler)的服务来完成配置。后台处理程序的工作是管理打印作业列表,也称为打印队列。当多人提交打印作业时,后台处理程序将作业存储到磁盘。一旦打印机闲置,后台处理程序就可以将作业发送到打印机,而不必担心其他打印作业争用。
即便可以将多台打印机连接到网络,也通常使用一个服务器作为后台处理程序,该服务器然后通过网络打印到打印机。这样做的原因有三点:第一,与打印机相比,服务器可能拥有一个更大、更健壮的缓存区;第二,服务器能够进行访问控制;第三,服务器能够分发打印机驱动程序,如果需要的话。
回页首
SMB 和 CIFS
SMB 是一个协议,而不是一个实现。这个协议已经在许多不同的操作系统中实现 — 从 Windows 到 UNIX 甚至到大型机环境。
历史
SMB 起源于 IBM,但 Microsoft 在上世纪 90 年代初开始联网其产品时将其实现。那时,SMB 需要一个单独的产品,比如 LAN Manager 或 Windows for Workgroups,但文件共享在 Microsoft Windows NT 中最终成为常规操作系统的一部分。
为了在其操作系统中引入一些新特性,Microsoft 继续改进 SMB,最终诞生了一个名为 CIFS 版本,CIFS 然后被提交到 Internet Engineering Task Force 进行标准化。
大约与此同时,澳大利亚的一位博士生 Andrew Tridgell 开始反向工程 SMB 的一个大型机实现,并开始开发一个最终成为开源实现的 SMB 实现和一些称为 Samba 的 Microsoft 协议。这个项目开始作为一种文件移动方法,现在已经发展为一个完整的客户端和服务器实现,包括充当一个 Windows 域控制器和不久以后将充当一个 Active Directory 服务器的能力。
SMB 和 CIFS 对比
从技术上讲,CIFS 是一种 SMB 方言。SMB 协议多年来一直在修改,因此,客户端和服务器有必要协商使用哪种协议方言。CIFS 引用 NT LAN Manager (NTLM) 系列扩展。奇怪的是,这个协议并不使用字符串 CIFS
来标识自身,而是使用 NT LM 0.12
。
出于实际应用目的,SMB 和 CIFS 这两个术语可以互换,这是因为现在使用的是 SMB 的 CIFS 方言。CIFS 偶尔会被发音为“siffs”,而不是拼写为 SMB。
回页首
SMB 协议概述
作为一个客户端-服务器协议,客户端与服务器进行联系。SMB 开始需要一个称为 Network Basic Input/Output System(NetBIOS) 的应用程序编程接口(API)层。这个 API 提供 SMB 使用的几个服务,以及几个名称解析和网络浏览相关服务。与 NetBIOS 联用时,SMB 可以在下面的网络上运行:
- Raw Ethernet,这时,SMB 使用 NetBIOS Frames(通常称为 NetBEUI)
- Novell Internetwork Packet Exchange (IPX)/Sequenced Packet Exchange(SPX),这时,SMB 使用 NetBIOS over IPX/SPX (NBX)
- TCP/IP,这时 SMB 使用 NetBIOS over TCP/IP (NBT)
NetBIOS 向 Microsoft 网络提供三个关键服务:
- 名称服务,以发现网络上的主机
- 会话服务,用于客户端和服务器之间的可靠通信和传输
- 数据报分布服务,用于小消息和网络广播
因此,SMB 主要利用会话服务,但也要依赖其他两种服务的支持,比如使用名称服务来查找服务器地址。
最终,TCP/IP 的支配地位和 Microsoft 转为依赖 Domain Name System (DNS) 进行名称解析导致 SMB 以一种称为直接托管(direct hosting)的方式直接在 TCP/IP 之上运行。尽管 NBT 在 TCP 和 User Datagram Protocol (UDP) 端口 137-139 上运行,直接托管使用 TCP 和 UDP 端口 445。
OSI 堆栈中的 SMB
图 1 展示了 Open Systems Interconnection (OSI) 模型,该模型用于解释网络协议之间的交互。OSI 描述使应用程序通过网络工作所需的特性并将那些特性分解到一系列层中。每一层都使用下面的层提供的服务,并向上面的层提供服务。
图 1. OSI 模型
层 1 和层 2 分别是物理层和数据链接层,通过以太网实现。这两个层从一个网络跳到另一个网络,收集小型信息片段。TCP 和 IP 占据下面两层,分别是传输和网络层。网络层负责端到端连通性,而传输层允许从小型消息构建大型消息,并允许一个服务器上存在多个服务。每一层都使用它下面的层,因此网络层不必担心网络上的每次跳转如何使用物理和数据链接等问题。
在使用 NetBIOS 的网络上,会话层 被使用。会话层提供此前描述的会话服务。SMB 在应用程序层(这里没有使用呈现层)操作,这意味着它能利用下面的层提供的所有特性。
在不使用 NetBIOS 的网络上,会话层将被简单地省略。TCP 已经有能力处理大多数会话服务,而名称服务则由 DNS 处理。
Uniform Naming Convention
在 Internet 上,您已经熟悉了统一资源定位符(URI),比如 http://ibm.com/developerworks
。URI 标识特定文档或其他内容所处的位置。在上面的示例 URI 中,http
指的是主题 — 在本例中,文档将使用 HTTP 检索。请求内容的主机名为ibm.com
,/developerworks
指那个主机上被请求的资源。类似地,Uniform Naming Convention (UNC) 路径标识 Windows 网络资源。UNC 路径看起来类似于\\shorty\documents\public\photo.jpg
。UNC 路径从两个反斜杠(\\
)开始,然后依次是服务器名称,又一个反斜杠,共享文件夹名称,以及一个针对共享文件夹的相对路径,该路径标识资源路径。
UNC 与 URI 有几点区别:
- 不必使用主题,而 SMB 使用主题。
- 使用反斜杠而不是正斜杠(/
);尽管有时也可以使用正斜杠。 - 共享文件夹看起来就像资源名称的一部分,但引用的是服务器上的文件共享的名称,它不必存在于服务器的文件系统上。
回页首
Samba
Samba 宣称自己为“Linux 和 UNIX 程序的标准 Windows 互操作性套件”。尽管 Linux 和 UNIX 风格渗透到装载 SMB 文件共享的其他方法中,但更贴近 Samba 的功能的说法是,Samba 既是客户端又是服务器,或者更进一步,Samba 是进入 Windows 网络的一个集成点。
Samba 包含几个在后台运行并提供服务的守护进程和几个用于与 Windows 或 Samba 服务交互的命令行工具。本文章系列将详细讨论这些守护进程和工具,但其中一些需要特别注意的二进制文件是:
- smbd。 这个守护进程充当 SMB 文件和打印服务器。
- nmbd。 这个守护进程提供 NetBIOS 命名服务。
- mount.cifs。 这个工具将一个远程 SMB 文件系统装载到本地 UNIX 文件系统上,很像一个本地磁盘或 NFS 共享。
- smblient。 这个工具提供对 SMB 资源的命令行访问,很像一个 FTP 客户端。它还能列示远程服务器上的共享并浏览网络。
- smb.conf。 这不是一个工具,而是所有工具的配置文件,因此值得在二进制文件上下文中指出。
与其他开源软件一样,可以从源代码编译 Samba 或将其下载为您的发行版的一部分。它通过系统初始化脚本和配置文件管理。