学习 Linux,302(混合环境): 使用 Windows 客户端

使用 Windows 客户端与 Samba 服务器

虽然 UNIX 和 Linux 计算机都可以成为 Samba 服务器的客户端,但多数 Samba 服务器的客户端运行的都是 Windows®。因此,您需要了解如何使用 Windows 特性使您能够连接至 Samba 服务器。比如,在 Linux 计算机上使用某些 Samba 命令可帮助您调试可能出现的问题。

Roderick W. Smith, 顾问兼作家

Roderick W. Smith 是一位顾问兼作家,他撰写了十多本关于 UNIX 和 Linux 的书,包括 The Definitive Guide to Samba 3、Linux in a Windows World Linux Professional Institute Certification Study Guide。他还是 GPT fdisk 分区软件的作者。他目前定居罗得岛州的 Woonsocket 市。



2012 年 1 月 09 日

关于本系列

本系列文章帮助您了解 Linux 系统管理任务相关知识。您可以使用本系列文章的资料准备 Linux Professional Institute Certification level 3 (LPIC-3) 考试

参见我们的 学习 Linux, 302(混合环境):LPI-302 路线图,查看本系列中各篇文章的介绍和链接。路线图目前仍在更新中,目前反映的最新内容是 LPIC-3 考试的最新目标(2011 年 3 月)。每次写完一篇文章后,我们都会将其添加到路线图中。

在本文中,您将学习以下概念:

  • Windows 客户端的特性
  • 使用来自 Windows 的浏览列表
  • 在 Windows 内创建文件和打印机共享
  • 使用 smbclient 进行测试
  • 使用 Windows net 实用工具

本文帮助您准备 Linux Professional Institute (LPI) 的 Mixed Environment 特性考试 (302) 主题 314 下的目标 314.4。该目标的权值为 4。

先决条件

关于可选的 LPI-302 考试

与其他许多认证一样,Linux Professional Institute Certification (LPIC) 提供多个不同级别,每个级别都比前一个级别要求更多知识和经验。LPI-302 考试是 LPIC 层级的第三级中的一个可选特性考试,要求具有高级 Linux 系统管理知识。

要获得 LPIC 级别 3 (LPIC-3) 认证,您必须通过前两个一级考试(101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试 (301)。到达这个级别后,才能参加一些可选特性考试,比如 LPI-302

为了最有效地利用本系列中的文章,您应该具有高级 Linux 知识,并需要准备一个 Linux 系统,用于练习本文介绍的命令。尤其是,您应该具有对 Linux 命令行函数的实用知识并了解 Samba 配置的基础知识。您应该能够引导并使用一台 Windows 计算机并且十分熟悉它的基本操作,包括它的命令提示窗口。本文示例中使用的是 Windows 7 客户端,但此操作系统之前版本的过程和原理与此类似。


设置 Windows 内的 SMB/CIFS 选项

构建您自己的提要 (feed)

您可以构建一个自定义 RSS、Atom 或 HTML 提要,以便在我们添加新文章或更新内容时收到通知。访问 developerWorks RSS 提要。选择 Linux 作为专区,Articles 作为类型,输入 Linux Professional Institute 作为关键字。然后选择您想要的提要类型。

正如您必须用某些基本信息(比如工作组或域名)配置 Samba 一样,您必须在开始访问 Samba 共享之前先要用这类信息配置 Windows。为了在 Windows 实现这个目的,需要执行如下步骤:

  1. 在 Control Panel,单击 System and Security,然后单击 System

    结果应该类似于 图 1,在接近窗口底部的地方包含了有关计算机名和其工作组或域名的信息。

    图 1. Windows Control Panel 让您可以接触到系统命名选项
    Windows 控制面板的屏幕截图
  2. 单击 Computer name, domain, and workgroup settings 区域内的 Change settings

    这么做会生成 System Properties 对话框,如 图 2 所示。您可以使用这个对话框来更改计算机网络的基础输入/输出系统 (NetBIOS) 名称及其域或工作组归属。

    图 2. System Properties 对话框提供了对命名选项的访问
    系统属性的这个屏幕截图显示了 Computer description 被设置为 'Wembleth',workgroup 被设置为 RINGWORLD
  3. 更改 Computer description 字段使其提供更多信息,正如该字段下的提示所建议的那样。
  4. 如果计算机的 NetBIOS 名称(在 Full computer name 字段中所显示的)和工作组或域的名称均正确,那么单击 OK。否则,单击 Change 来设置 NetBIOS 名称和工作组或域的归属。

    当单击 Change 时,会出现如 图 3 所示的 Computer Name/Domain Changes 对话框。

    图 3. 可以在 Computer Name/Domain Changes 对话框内设置计算机名称以及域或工作组归属
    这个屏幕截图显示了如何编辑计算机名、工作组或加入一个域
  5. Computer name 字段中键入计算机的 NetBIOS 名称。

    若想要共享此计算机上的目录或打印机,此项将尤显重要;如果此计算机只充当客户端,那么此项的重要性就要稍逊一些。它只影响 NetBIOS 的命名。

  6. 如果愿意,那么可以通过单击 Full computer name 下的 More 更改计算机的 Domain Name System (DNS) 主机名。

    请注意您所做的任何更改都是本地的;它影响的是此计算机如何向其他计算机标识自己,但并不会影响其他计算机用来标识您所配置的这台计算机的名称。如果想要更改此计算机的 DNS 主机名,那么必须调整网络的 DNS 服务器。

  7. 适当选择 DomainWorkgroup 选项,在相关字段键入本地域或工作组名称。

    请注意 Domain 选项在某些版本的 Windows 是灰色不可用的,比如 Windows 7 Home Premium。如果想要完全加入一个域,那么必须更新 Windows 版本。

  8. 完成所有这些更改后,单击 OK

    Windows 会通知您必须重新引导。如果试图加入一个域,那么还必须输入身份验证信息。有关此主题的更多信息,请参阅文章 “学习 Linux,302(混合环境):域控制”。

重新引导后,Windows 应使用其新的 NetBIOS 名称和工作组或域身份,本文后续部分所介绍的步骤应该能够奏效。如果不能,那么需要重新检查配置:有可能是域或工作组名称有错误。也有可能是更为基础的问题,比如网络电缆松了。


从 Windows 访问文件

理想情况下,Samba 服务器的配置从 Windows 客户端工作起来问题不大,实际上,情况也通常如此。因此,本文首先假设一切工作正常。有了这个假设,我继而介绍了如何浏览 Windows 中的 Samba 共享以及如何在 Windows 中为共享直接输入一个 Universal Resource Identifier (URI)。如果出现问题,那么后续的 使用 Linux 客户端调试问题 一节将会很有帮助。

浏览到 Samba 共享

正如文章 “了解 Linux,302(混合环境):文件服务” 中所阐释的,Server Message Block (SMB)/Common Internet File System (CIFS) 提供了旨在简化网络上的文件定位和打印机共享的特性。实现的细节则取决于客户端的用户界面 (UI),而实际上,已经有几种方式可以在 Windows 中浏览共享。其中的一种方式就是使用集成到操作系统的文件管理器:

  1. 通过右键单击 Computer 桌面图标打开 Windows Explorer,然后单击 Explore,如 图 4 所示。
    图 4. 文件浏览已经紧密地集成到 Windows Explorer
    这个屏幕截图显示了 Windows explorer 的存储设备及其已用容量

    在左侧面板,通过 Network 项可访问到网络浏览列表。单击一个计算机的名称可在细节面板内查看它所提供的共享,单击这些共享可打开它们。

  2. 当打开一个共享并定位了一个文件后,就可以双击以在相应的应用程序中打开它,将它拖到回收站删除它,或者就如同对待本地硬盘上的文件那样对待它。

Windows OpenSave As 对话框内也有类似的特性,可供很多程序用来定位文件。

输入一个 URI

有时,浏览并不能奏效。您的网络可能碰到浏览问题,或者您将共享配置成不显示在浏览列表中。如果是这种情况,而您又知道服务器的确切 DNS 或 NetBIOS 名,那么您可以直接在 Windows Explorer 内输入此共享的 URI。为此,完成如下步骤:

  1. 单击地址栏。

    确保单击现存条目右侧:我们不想选择其中的任何一个。此字段应该改为以 URI 格式显示此项。

  2. 以 \\COMPUTER_NAME\SHARE_NAME\ 格式键入想要访问共享的确切路径,比如键入 \\NESSUS\RODSMITH\ 来访问 NESSUS 计算机上的 RODSMITH 共享。完成输入后,按下 Enter。

Windows Explorer 现在应该能够显示所指定的这个共享的内容。您能够像直接浏览到那里一样地处理文件和文件夹。

映射网络共享

有时,相比输入一个 URI 或浏览到共享,为网络共享分配一个驱动器字母,可以使共享更容易访问。图 4 显示 \\NESSUS\RODSMITH 共享已被映射为驱动器 N。

要创建一个新的驱动器映射,浏览到共享,右键单击它,然后单击 Map Network Drive。会出现 Map Network Drive 对话框,如 图 5 所示。您可以设置驱动器字母并选择各种其他的选项来调优结果。

图 5. 映射一个网络驱动器会在 Windows 中为它分配一个驱动器字母。
这个屏幕截图显示了在 Windows 中将 z 驱动器映射给 \\WEMBLETH\Users 上的共享并在登录时重新连接

从 Windows 打印到 Samba

如果 Samba 打印机配置适当,那么从 Windows 打印到 Samba 会非常直观。基本过程为:在 Windows 内创建一个打印机队列并将它链接到合适的 Samba 共享。最大问题可能就是决定要使用哪个驱动程序,因为有些 Samba 共享要求使用一个原生的 Windows 驱动程序,而另外一些则要求使用一个不相关的 PostScript 驱动程序,有些则允许使用这两种类型驱动程序中的任何一种。

为了在 Windows 内创建一个打印机队列,需要完成如下步骤:

  1. 打开 Control Panel 的 Hardware and Sound 项,然后单击 Add a Printer

    随后出现的对话框会询问想要添加哪种类型的打印机。

  2. 选择 Add a Network, Wireless or Bluetooth Printer

    Windows 会搜索寻找可用的打印机并显示一个列表,类似于 图 6 所示的列表。

    图 6. Windows 搜索网络打印机并以列表的形式显示它们
    这个屏幕截图显示了具有打印机共享列表的 Windows
  3. 选择想要使用的打印机,然后单击 Next

    如果没有看到打印机,那么可能需要重新配置它的 Samba 共享。如果之前故意隐藏了打印机不被浏览,那么可以单击 The printer that I want isn't listed 来为此打印机提供一个 URI。

  4. 如果已经配置好托管此共享的服务器来提供这些驱动程序,那么 Windows 会自动下载并安装它们。如果没有,那么会看到一个对话框,提示驱动程序未找到。这就需要从标准 Windows 驱动器列表中选择一个驱动程序或安装由打印机生产商提供的驱动程序。
  5. 安装了驱动程序之后,打印一个测试页。

当打印机正确配置后,就可以从任何应用程序的 Print 对话框中选择它,如 图 7 所示。

图 7. 通过从 Windows Print 对话框的 Name 列表中选择一个配置好了的打印机来使用它
这个屏幕截图显示了从打印机对话框选择这个 \\NESSUS\hp4000 打印机

由于 Linux 使用 PostScript 作为标准打印机输入,并且会为非 PostScript 打印机将此输入转变成打印机的原生语言,因此通常会像对待 PostScript 模型那样对待所有 Samba 打印机。为此,必须要在 Windows 内安装一个适当的通用 PostScript 驱动程序,其方法可通过 Windows 客户端来选择或使用 Samba 来交付此驱动程序。在标准的 Windows 打印机驱动程序中,Generic 部分中的 Microsoft Publisher Color Printer 驱动程序通常就能很好地适用于 Samba 打印机。

若不使用 PostScript 打印机,可以安装由打印机生产商提供的特定于此打印机的驱动程序。为此,就需要必须找到该驱动程序,而且还需要配置 Samba 或 Common UNIX® Printing System (CUPS) 来恰当地处理原始数据提要,而不是试图解析它并将它转变成打印机的原生语言,正如 CUPS 通常所做的那样。

总地来说,PostScript 与原生驱动程序有以下几点不同:

  • 为非 PostScript 模型使用 PostScript 打印机驱动程序的一个缺点是,您可能不能使用某打印机的全部独特特性,比如托盘选择和分辨率设置。这样的特性通常只能从原生打印机驱动程序才能访问到。
  • 相比使用原生打印机驱动程序打印拥有大量文字的相同文档,使用 PostScript 驱动程序进行打印可以减少文本资料打印作业所消耗的网络带宽。这种影响在经济的喷墨式打印机上要比在中高端激光打印机中更为明显。
  • 使用 PostScript 驱动程序会增加打印服务器计算机的 CPU 需求。除非服务器低于现代标准或是处理的打印机过多,否则这种影响很可能并不重要。
  • 使用原生打印机可能需要配置 Samba 或 CUPS,而这有时更为麻烦,得不偿失。

如果愿意,那么可以尝试多个驱动程序,来看看究竟哪个驱动程序更适合于您的网络及打印机。在某些情况下,可能想要为一个打印机创建多个 Samba 队列并将每个队列链接到一个不同的 Windows 驱动程序。这样一来,用户就可以选择最适合于特定打印作业的那个驱动程序了。


使用 Windows net 命令

虽然相比 Linux,Windows 的使用和管理更面向于图形 UI (GUI),但是也有一些文本模式的 Windows 实用工具,而且其中一些还具有较 GUI 实用工具更多的优势。对于 SMB/CIFS,Windows 内最主要的文本模式的工具是 net,它能执行您使用 GUI 所能执行的很多任务。net 命令具有一个独到之处,就是它可以脚本化,所以可以在一个网络启动脚本中使用它来在所有计算机上执行一组常用任务或是用一个命令执行一套复杂的动作。

要使用 net,可以键入命令后跟一个子命令名称,有些还要求额外的选项。表 1 总结了最为重要的一些 net 子命令。

表 1. Windows net 命令的子命令
子命令效果
CONFIG显示或更新各种网络设置,比如计算机的 NetBIOS 名和工作组或域名
FILE当在 Windows 文件服务器上键入时,显示由客户机打开的共享文件的有关信息
HELPnet 命令的使用显示帮助信息
SESSION当在 Windows 文件服务器上键入时,显示来自客户机的活动连接;添加 /DELETE 会结束一次会话
STATISTICS显示与客户端 (NET STATISTICS WORKSTATION) 或服务器 (NET STATISTICS SERVER) 操作相关的发送和接收字节、错误等统计数据
TIME将一个计算机的时钟设置成与另一个计算机一致
USE将一个共享映射到一个 Windows 驱动器字母或显示当前映射的相关信息
USER添加、删除或修改域控制器上存储的用户帐号
VIEW显示网络上的计算机列表或给定计算机上可用的共享列表

您可以使用其中的几个选项来产生与在文件浏览器内获得的效果相类似的效果。尤其是,可以使用 VIEW 后跟 USE 来浏览文件共享,如 清单 1 所示。

清单 1. 使用 VIEW 命令浏览文件共享
> NET VIEW
Server Name            Remark

-------------------------------------------------------------------------------
\\NESSUS               Nessus
\\SEEKER               seeker server (Samba, Ubuntu)
\\VBOX7                VBox7
\\WEMBLETH             Wembleth
The command completed successfully.


> NET VIEW \NESSUS
Shared resources at \\NESSUS

Nessus

Share name          Type   Used as  Comment

-------------------------------------------------------------------------------
cf                  Disk            Epson RX500 CF port
floppy              Disk            Floppy Drive
hp4000              Print           HP4000 via Ethernet
rodsmith            Disk            Home Directories
smbpdf              Print           PDF Generator
Stylus_Photo_RX500  Print           EPSON Stylus Photo RX500
The command completed successfully.


> NET USE \\NESSUS\cf I:
The command completed successfully.

这个示例显示了浏览网络以及将 \\NESSUS\cf 共享映射到驱动器 I: 处的 Windows 设备的过程。因而,使用此设备的名称就能访问它了。

NET TIME 命令是 Network Time Protocol (NTP) 服务器的一个快速替代。如下命令可同步 Windows 计算机的时钟与 NESSUS 服务器的时钟:

> NET TIME \\NESSUS /SET

请注意,有些 net 子命令需要管理员权限。如果试图使用这些命令而不首先打开一个管理员命令提示,那么此实用工具就会报告说缺乏足够的权限。在 USER 的情况下,还需要知道更改远端计算机上的账号所需要的密码。


将 Windows 用作一个服务器

虽然 LPIC-302 认证(以及本系列文章)的中心都是如何将 Linux 用作一个 Samba 服务器,但这并不意味着 Linux 与 Samba 的组合是惟一一种履行 SMB/CIFS 服务器责任的方式。毕竟,这种协议的初衷是为了能让 DOS、Windows 和 IBM® Operating System/2® (OS/2) 计算机共享资源的;Samba 是后来才加入进来的。因此,我来简要介绍一下共享来自 Windows 的文件和打印机以供 Windows 或 Linux 客户端使用的过程。

从 Windows 共享文件

可以配置一个 Windows 服务器来共享整个分区或只共享分区的一个子目录,比如用户目录或其子目录。为此,需要完成如下步骤:

  1. 浏览到您想要共享的驱动器或目录。
  2. 右键单击此驱动器或目录,然后指向 Share with,内含一个具有很多选项的子菜单。
  3. Share with 命令选择一个选项。

    Windows 7 融入了一个 Homegroup 特性,可实现与预定义的一组用户共享。如果尚未设置这样的一个组或如果想要指定一些其他的组,那么单击 Specific People。选择这个选项会产生一个对话框,如 图 8 所示。

    图 8. Windows 允许您指定想要与之共享文件的人
    这个屏幕截屏显示了 File Sharing 对话框,其中 Homegroup 被赋予了读权限且 rodsmith 被设为 owner
  4. Add 列表选择一个用户或组,或是在框内键入一个用户名。
  5. 单击 Add
  6. 如果愿意,那么可通过调整 Permission Level 列下的这个新条目来调整赋予所选用户的权限。

现在,可以尝试从另一个 Windows 或 Linux 计算机连接到这个新文件共享来测试它。

从 Windows 共享打印机

如果想要打印到连接着一台 Windows 计算机的打印机,那么可以在该服务器上创建一个打印机共享。为此,完成如下步骤:

  1. 安装并配置本地打印机的一个打印机队列。
  2. 在 Control Panel 的 Hardware and Sound 项,单击 Devices and Printers
  3. 右键单击想要共享的打印机,然后单击 Printer Properties
  4. 单击 Properties 对话框内的 Sharing。结果应该类似于 图 9
    图 9. 您可以从 Properties 对话框共享 Windows 内的一个打印机
    这个屏幕截屏显示了如何通过打印机的属性访问网络和共享中心
  5. 选择 Share this printer 复选框,在 Share name 字段键入一个名字。

    Render print jobs on client computers 复选框和 Additional Drivers 按钮对某些 Windows 客户端十分重要;但如果想要共享此打印机以便 Linux 客户端可以使用,那么无需关注这二者。

  6. 单击 OK 来完成这些更改。

Linux 的 CUPS 子系统可以创建一个能打印到 SMB/CIFS 打印机共享的打印队列,所以是可以从 Linux 打印到 Windows 的一个共享打印机的。请注意这个共享的打印机(如果不是一个 PostScript 模型)将需要 Linux 驱动程序;即,打印作业必须以此打印机的原生格式在 Linux 端呈现和通过网络发送。这与通过 Samba 共享的打印机形成对比,后者可以这么处理,也可以以 PostScript 格式发送打印作业。


使用 Linux 客户端调试问题

可以使用多种 Linux 工具来帮忙调试使用了 Samba 和 Windows 服务器的 SMB/CIFS 联网问题。其中有些工具已经在本系列的其他文章中介绍过了,所以我这里只对它们进行概述。这些工具和技术包括安装 (mount) 一个共享、使用 smbclient 和使用 smbget。虽然与 Samba 或 SMB/CIFS 关系不大,目标 314.4 还提到了 rdesktop,所以我这里也一并提及。

测试安装一个共享

测试共享最明显的方式是通过常用工具来使用它。对于一个 Linux 客户端,这将意味着用 mount 命令和 cifs 文件系统工具来安装它,正如文章 “Learn Linux, 302 (Mixed environments): CIFS integration” 中所描述的那样。(过去,LPIC 目标 314.4 中提及的 smbmountsmbumount 实用工具可以用来安装和卸装 SMB/CIFS 文件系统,但 2.6.37 Linux 内核不再对这些工具提供支持。)

键入 mount //SERVER/SHARE /mnt,其中 SERVER 是服务器名,SHARE 是共享名,这是测试您安装共享的最简单方式。但是正如 Objective 314.1 文章中所提到的,您可能需要添加更多的选项来指定您的用户名和密码等。

如果无法安装一个共享,那么请在 Samba 日志文件或内核环缓冲(通过键入 dmesg 访问)中找原因。比如,可能是需要调整安装选项。也可能是服务器端存在的问题;您需要调整权限或其他设置。

使用 smbclient 进行测试

smbclient 程序,正如在文章 “Learn Linux, 302 (Mixed environments): CIFS integration” 中所描述的,是一种测试基本功能很好的方式,因为它是一个十分基础的工具,可提供服务器计算机的直接界面,而无需文件系统映射这些麻烦的操作。

使用 smbget 进行测试

smbget 程序与 wget 类似,可使用 HTTP 检索文件。要使用 smbget,必须知道想要检索的文件的确切 URI。依照其最简单的使用形式,可以键入此命令后跟如下这个 URI:

$ smbget smb://WEMBLETH/REPORTS/financial-report.pdf

本示例在 WEMBLETH 服务器的 REPORTS 共享中检索文件 financial-report.pdf。可以添加各种选项来修改 smbget 的行为,比如用 -u 来指定用户名或用 -R 来递归检索整个目录树。参见此程序的 man 页面以获取相关的详细信息。

使用 rdesktop 进行测试

rdesktop 程序是 Remote Desktop Protocol (RDP) 的 Linux 实现,RDP 是一个 Windows 远端访问协议,大体类似于 Virtual Network Computing (VNC) 工具。在 System Properties 对话框(如 图 2 所示)中可以激活 RDP。单击 Remote 选项卡,并在 Remote Desktop 区域内设置一个选项来匹配理想的安全性设置。完成后,单击 OK

注意:并不是所有的 Windows 版本都支持 RDP,尤其是家庭版就缺少这个特性。

要使用 rdesktop,需要键入此程序名后跟服务器的 DNS 主机名或 IP 地址。还可以选择包含诸多选项,比如用 -u 来指定用户名。参见此程序的 man 页面以获取相关的详细信息。

参考资料

学习

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=784486
ArticleTitle=学习 Linux,302(混合环境): 使用 Windows 客户端
publish-date=01092012