Samba(unix文件系统桑巴)介绍
网络的宗旨是更容易地在计算机间共享信息. 信息共享, 在 Linux 机器之间, 或者与 任何的 Unix 主机, 是容易的--诸如 FTP 和 NFS 之类的工具是现成的, 也容易设置. 不过不幸的是, 即使是死心踏地的 Linux 狂热分子也不得不承认在这个世界上大多数的 PC 使用的是 Windows 系统几个不同版本中的一个. 除非你生活在一个与世隔绝的环境中, 你的 Linux 机器难免要与运行 Windows 系统的机器交换信息. 如果不想用软盘来转移文件, 那么你就需要 Samba 这个工具.
Samba 实际上是一组程序, 它们让你的 Linux 机器懂得 SMB (Server Messages Block) 协议. SMB 是一套通讯协议, 让运行 OS/2, Windows NT, Windows 95, Windows for Workgroups 的计算机实现文件共享和打印机共享服务. 这套协议类似于 NFS (网络文件系统) 和 lpd (Unix 标准打印服务器), 及一套分布式授权认证 系统(如 NIS 或 Kerberos)的组合. 如果你熟悉 Netatalk , 那么 Samba 所做的正如 Netatalk 在 Macintosh 上的表现. 在运行 Samba 服务器程序的时候, 你的 Linux 机器在"网络邻居"中看起来如同一台 Windows 机器. Windows 机器的用户可以"登录"到你的 Linux 机器中, 当然这要求你给予适当的权限, 从你允许的部分 Unix 文件系统中拷入或者拷走文件, 提交打印任务, 甚至向你发送 WinPopup 消息. 如果你的 Linux 运行 环境中几乎为 Windows NT 和 Windows 95 包围, Samba 将是无价的工具.
图 1. 网络邻居中的 Samba 服务器
Samba 也能做一些一般来说需要 Windows NT 服务器去完成的工作, 如作为一个 WINS 服务器和处理来自 Windows 95 机器的 "网络登录" 请求等等. 从 Samba 代码中导出的一个 PAM 模块可以让你使用一个 Windows NT 服务器来验证 Unix 登录. 目前, 一个 Samba 项目正在进行逆向工程解析 Windows NT 主域控制协议, 并将作为 Samba 的一部分重新实现它. 这部分代码, 仍然处于实验阶段, 已经能成功地处理一个来自 Windows NT 工作站的登录请求. 距离它成为一个羽翼丰满的主域控制者(PDC)已经不远了, 那时它将可以存储用户帐户资料和与其它 NT 域建立信任关系. 最令人高兴地是, Samba 是在 GNU 通用公共许可证(GPL)下自由发行的, 正如 Linux. 在大多数环境中, Windows NT 服务器只是向一 Windows 95 机器提供文件服务, 打印 缓冲池和权限控制. Linux 和 Samba 的组合提供了高性能, 低价格的解决方案, 当然是 与典型的微软解决方案相比较.
Windows 网络
如果你知道一点 Windows 网络如何工作的话, 那么也比较容易理解 Samba 是如何完成 工作的. Windows 客户通过一个 NetBIOS 对话传送"Server Messages Block"来使用 服务器端的文件和打印机资源. NetBIOS 原本是由 IBM 开发的, 它定义了一个对应于运行在 MS-DOS 或者 PC-DOS 上的软件的网络界面. 它定义了一套网络服务和使用这些服务的软件界面, 但没有规定实际用来传送比特数据的网络协议.
NetBIOS 三个主要特点在首次实现时已经呈现出来, 每一个都使用了不同的传输协议. 最初实现时参考的(传输协议)是 NetBEUI (NetBIOS 扩展用户界面), 它是一个设计为单段网络使用, 低负荷的传输协议. NetBIOS over IPX, Novell 使用的协议, 也很流行. Samba 使用 NetBIOS over TCP/IP, 这种方式有多个优点.
TCP/IP 已经在每一个操作系统中高效地实现了, 所以相对来说易于移植到每一种风格的 UNIX 中, 同样地移植到 OS/2, VMS, AmigaOS, Apple's Rhapsody(现在是 NextSTEP) 和(令人惊奇地)主机操作系统(如 CMS). Samba 也使用在嵌入式系统中, 如独立的打印机服务器和 Whistle's InterJet Internet appliance. 使用 TCP/IP 也意味着 Samba 可以 很好地适应大型的 TCP/IP 网络, 如因特网. 认识到这些优势, 微软已经将 SMB 和 NetBIOS over TCP/IP 的组合
重命名为 通用因特网文件系统(CIFS). 微软正在努力使 CIFS 作为一个文件传输的因特网标准.
图 2. SMB 的网络视图与 OSI 网络模型比较
Samba 的组成部分
一个 Samba 服务器实际上包括两个服务器程序: smbd and nmbd. smbd 是 Samba 的核心. 它建立对话, 验证客户和提供文件系统和打印服务. nmbd 实现了 "网络浏览者". 它的任务是广播 Samba 服务器必须提供的服务. nmbd 使 Samba 服务器显示在 Windows 95 和 Windows NT 的"网络邻居"中, 允许用户浏览可以使用的资源. 没有 nmbd 的 Samba 服务器是可能的, 但是用户必须提前知道他们想使用的服务器和资源的 NetBIOS 名称. nmbd 实现了微软网络浏览者协议, 这意味着它将参与浏览者选择(又称"浏览者 战争"), 可以作为一个主控者或者是一个后备浏览者. nmbd 还有一种功能, 作为一个 WINS (Windows Internet Name Service) 服务器, 在你的网络跨越一个 TCP/IP 子网时是必要的.
Samba 也包含了一组其他工具. smbclient 是一个 SMB 客户, 带有一个 shell-based 用户界面, 类似于 FTP, 它允许你从 Samba 服务器拷入和拷出文件, 同样允许你通过它使用 SMB 打印机资源和 发送 WinPopup 消息. 对于 Linux 用户, 也有一个 SMB 文件系统让你将一个 Windows 机器的共享目录连接到 Linux 文件系统中. smbtar 是一段 shell 脚本, 它通过 smbclient 使用 tar 格式备份和恢复一台远程 Windows 的共享文件.
testparm 命令, 解析和描述你的 f 文件的内容, 特别有用, 因为它 提供了一个简易的方法发现配置上的错误. 其他命令用来管理 Samba 的加密密码文件, 配置不同的国际字符集和诊断问题.
配置 Samba
通常, 解释一个程序能做什么的最好方法是举几个例子说明. 出于两个原因, 我 假设你已经安装了 Samba. 首先, 介绍编译和安装 Samba 足以另外写一篇文章了. 其次, 在新的稳定版本发行后, Red Hat 和 Debian 都将包含 Samba, 安装将是一瞬间的事. 更进一步, 多数的流行(Linux)版本"基本"安装已经自动包括了 Samba.
在 Samba 1.9.18 版本以前, 如果你想使用加密密码验证, 就必须自己编译 Samba. 这是因为 Samba 使用了一个 DES 库实现加密, 而美国将之列为军事机密, 所以二进制 执行码的版本不能合法地流出美国, 镜像站点也不能发行预编译的带有加密密码验证的 Samba 版本. 从 1.9.18 版本起, Samba 使用一个修改过的 DES 算法, 不再受限. 现在唯一一个自己编译 Samba 的理由是如果你想测试一下最新的 alpha 版本或者你希望有一些非标准的特性.
因为 SMB 是一个大型而复杂的协议, 配制 Samba 往往会使人气馁. 在 f Samba 的配置文件中存在超过 170 个不同的配置选项. 尽管如此, 不要害怕. 就象 Unix 的其他部分一样, 一个简单的可运行的配置是相当容易的. 然后你可以在学会了一项 参数后再调整初始的配置. 最后, Samba 的最新版本, 在这篇文章一月写完时, 是 1.9.18p1. 也可能在本文发表后, 其中的一些参数已经被改变了. 通常, Samba 发行包包括的文档与软件还是比较贴切的(特别是 README 文件).
f 文件在 Red Hat 和 Debian 发行包中是在 /etc 目录. 如果你手工编译了 Samba, 而且没有修改过任何安装路径, 那么它可能位于 /usr/local/samba/f. Samba 的所有应用程序都会首先读取这个文件, 它结构类同于 Windows 的 INI 文件, 其中存放着配置信
息. 每一段的开头是一个方括号括住的名字, 这个名字可能是一个服务名称或者是一个 特别段(名称): [global], [homes] 或者 [printers].
每一个配置参数可以是全局参数, 控制整个服务器的某些功能, 也可以是服务类参数, 只影响某一类服务. [global] 段用来设置所有的全局配置选项, 和缺省的服务设置. [homes] 是一个段, 动态地映射到每一个用户的主目录(home). [printers] 段提供了一个便易的方法, 可以共享 printcap 中 定义的打印机.
一个简单的配置过程
下面的 f 文件描述了一个简单有效的 Samba 配置, 它可以使我的 Linux 机器 上的所有用户主目录共享在网络中.
[global]
netbios name = FRODO
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论