Board logo

标题: 通用线程:Samba 简介第一部分 [打印本页]

作者: look_w    时间: 2018-4-15 18:18     标题: 通用线程:Samba 简介第一部分

演示 Samba首先,我要显示一组屏幕快照,它们来自我的一台名为 kompressor 的Windows NT 机器。这些屏幕快照演示了从 Windows方看到的一个完整配置的 Samba 系统。它们会带给您 Samba功能的一个实际理念。
当前在我的内部 LAN 中设置了三台机器。
在这个环境中,我广泛使用 Samba 来共享文件、打印,甚至直接从freebox (Unix) 运行 Windows 应用程序。有一个屏幕快照显示了kompressor “网络邻居”的内容:
kompressor 的“网络邻居”您可以看到,ntbox 和 kompressor都是可见的,这并不奇怪,因为它们都是 NTWorkstation。但不同寻常的是,我同样能看见 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 是我的 NECSuperScript 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 NTWorkstation,所以必须进行登录才能获得对机器的访问。对于这个 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。将它们的口令设置为与我 NTWorkstations 上的口令匹配以达到一致。对于 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 的主要网站是  ,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的日志文件。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0