学习 Linux,302(混合环境): SWAT 配置

通过一个基于 Web 的界面管理 Samba

Samba Web Administration Tool (SWAT) 是一个用于 Samba 的基于 Web 的管理工具,支持从任何具有 Web 浏览器的计算机进行 GUI 配置。SWAT 本身就是一个服务器,与所有服务器一样,它要求至少满足最低配置。在本文中,将学习如何安装和配置 SWAT 本身,以及如何使用 SWAT 管理 Samba。

Roderick W. Smith, 顾问兼作者

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



2011 年 11 月 21 日

关于本系列

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

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

概述

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

  • Samba Web Administration Tool (SWAT) 特性概述
  • 安装和设置 SWAT
  • 使用 SWAT 配置 Samba

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


先决条件

关于可选的 LPI-302 考试

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

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

本文假设您拥有 Linux 命令行函数的工作知识,理解 Samba 配置的基础知识。您应该熟悉 smb.conf 配置文件的总体结构。您还应该理解服务器通常是如何运行的,包括使用 System V (SysV) 启动脚本和超级服务器。


安装和运行 SWAT

在 Samba 3.x 版中,SWAT 是一个单独的服务器,独立于两个主要的 Samba 服务器:smbdnmbd。因此,您必须将它配置为独立于主 Samba 服务器运行。根据您安装 Samba 的方式,有可能需要单独安装 SWAT。为增加安全性,您可能想将 SWAT 配置为通过 Secure Sockets Layer (SSL) 加密运行。

注意:仍处于开发阶段的 Samba 4 进行了一些重要的架构更改,其中包括对 SWAT 的重要更改。本文描述 Samba 3.x 中的 SWAT 的状态,Samba 3.x 是目前推荐用于生产环境的 Samba 版本。

构建您自己的提要

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

安装 SWAT

如果您像目标 311.1 中所述那样从源代码构建 Samba,那么 SWAT 应该随其他 Samba 组件一起默认构建并安装。configure--disable-swat 选项会导致 SWAT 不被编译。如果您想显式启用 SWAT,而不是依赖默认设置,那么您可以将 --enable-swat 传递给 configure

如果您使用发行版维护者提供的二进制程序包安装 Samba,那么您应该检查您的程序包,确定如何安装 SWAT。许多发行版都提供一个名为 swatsamba-swat 的程序包,其中包含 SWAT 服务器。这个程序包必须与基本 Samba 程序包分开安装;但是,它可以自动安装。使用您的打包工具,查看您的系统上有什么程序包。

如果您不能找到一个单独的 SWAT 程序包,那么它可能已经安装为另一个 Samba 程序包的一部分。毫不奇怪,SWAT 二进制文件名为 swat,因此您可以搜索该文件,查看您的计算机上是否有 SWAT。如果您正在使用 Gentoo Linux,请注意,当您使用 samba 程序包来构建 SWAT 时,必须将 swat 设置为一个 USE 标志。

安装好 SWAT 后,下一步是运行它。SWAT 被设计为通过超级服务器(比如 xinetdinetd)运行。由于这些超级服务器的配置差别很大,因此我会单独描述它们。

通过 xinetd 运行 SWAT

目前,大多数 Linux 发行版都将 xinetd 用作超级服务器。如果您不确定您的计算机使用哪个超级服务器,可以尝试使用 ps 搜索字符串 inetd

$ ps ax | grep inetd
17996 ?        Ss     0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -reuse

在本例中,xinetd 正在运行。如果 ps 输出显示一个名为 inetd 的进程,那么您应该遵循下一节 使用 inetd 运行 SWAT 中的指南来运行。如果没有任何超级服务器正在运行,那么您可能需要安装 xinetdinetd

xinetd 服务器使用一个名为 /etc/xinetd.conf 的配置文件。在大多数安装中,这个文件包含一些全局设置,具体使用的设置取决于 /etc/xinetd.d 目录中的特定于服务器的文件。SWAT 的配置文件可能名为 /etc/xinetd.d/swat,并且可能类似于清单 1 中的内容。

清单 1. SWAT 配置文件示例
service swat
{
        port            = 901
        socket_type     = stream
        protocol        = tcp
        wait            = no
        only_from       = localhost
        user            = root
        server          = /usr/sbin/swat
        log_on_failure += USERID
        disable         = yes
}

您的默认文件在一些细节方面可能有所不同,但关键点上应该与此类似。如果您的系统没有这样一个文件,那么您可以创建一个文件,或者在 /etc/xinetd.conf 中添加一个定义 SWAT 服务的条目。您应该保留(您的发行版提供的文件或上面的示例中的)大部分选项的默认值;但是,您可能需要更改一些条目:

  • only_from 行定义一个访问限制。在本例中,xinetd 只支持来自运行 SWAT 的计算机的访问。这是一个非常有用的安全预防措施,但是如果您需要从另一台计算机或一组计算机管理您的 Samba 服务器,那么您可以指定其他地址。可以接受的地址类型很很多种;请参阅 xinetd.conf 手册页了解有关的详细信息。
  • server 行指定 SWAT 二进制文件的完整路径。请确保您的 swat 二进制文件位于该位置。
  • disable = yes 行告知 xinetd,它 应该启动 SWAT。您必须将此行更改为 disable = no,以便使用 SWAT。

最后一点最点是:作为一个安全预防措施,许多发行版附带的 /etc/xinetd.d/swat 配置文件默认情况下都会禁用 SWAT。也可以通过 /etc/xinetd.conf 中的一行代码禁用服务器:

disabled = swat

如果您看到这样的行上出现 swat,那么您必须移除它,以便启动服务器。

对 /etc/xinetd.d/swat 进行所需的更改后,必须告知 xinetd,以便重新加载其配置文件。对于大多数发行版,可以通过将 reload 选项传递给 xinetd 的 SysV 启动脚本来完成这项任务:

# /etc/init.d/xinetd reload

重新加载配置文件后,就可以开始使用 SWAT 了。但是,如果您想启用 SSL 安全性,则应该参阅 启用 SSL 加密 一节。

通过 inetd 运行 SWAT

如果您正在使用 inetd,那么配置过程类似于 xinetd,但有几个关键细节不同。正如您可能预期的,inetd 的配置文件名为 /etc/inetd.conf。最新的 inetd 版本支持分割单独的每服务器(per-server )配置文件,这很类似于 xinetd,因此,您可能会发现一个拥有单独的配置文件的 /etc/inetd.d 目录。

无论是使用单个 /etc/inetd.conf 文件,还是使用 /etc/inetd.d/samba 配置文件,Samba 的条目都包含以下代码行:

swat  stream  tcp  nowait  root  /usr/sbin/tcpd  /usr/sbin/swat

这行包含的信息与 xinetd 条目大致相同。通过在 /etc/services 中查找位于 (swat) 行首的名称,可以 确定端口号。本例中的 /usr/sbin/tcpd 条目在 xinetd 配置中没有对等条目,这是因为这个条目指定了客户端试图联系服务器时 inetd 运行的程序。在本例中,inetd 启动了 TCP Wrappers(使用程序文件名 /usr/sbin/tcpd)。然后 TCP Wrappers 执行自己的安全检查并启动 SWAT,即该行最后一个条目中指定的程序 (/usr/sbin/swat)。

您可能会发现,您的 /etc/inetd.conf 文件中有一个 SWAT 条目被一个前置的井字符 (#) 注释掉了。如果是这样,那么必须取消注释来激活 SWAT。取消注释或以其他喜欢的方式修改这个条目后,应告知 inetd,以便重新加载其配置文件。您可以按照前面介绍步骤的重新加载 xinetd 配置的方法来完成这项任务。

启用 SSL 加密

如前所述,标准 SWAT 配置不支持加密。如果您已限制对本地主机的访问(如前面展示的 xinetd 配置所示),或者您已使用 TCP Wrappers 实现了类似的限制,那么这不成问题。但是,如果您使用 SWAT 进行远程访问,不加密就运行它意味着您的 root 密码将以没有加密的形式通过您的网络。这种风险是难以承受的,尤其是需要使用 SWAT 从 Internet 上的一台计算机而不是从 Samba 服务器所在的子网中的计算机配置 Samba 时。

要提高安全性,可以将 SSL 加密添加到您的 SWAT 配置。为此,必须安装额外的软件并更改配置。所需的软件是 OpenSSL 和 stunnel。大多数发行版的包数据库都包含这两个包,因此安装应该比较简单。

注意:最好首先在没有 SSL 加密的情况下配置和测试 SWAT。这样,您就会知道服务器在最简单的配置下是否能够按照预期的方式运行。如果遇到问题,您可以调试它们,并确信 SSL 配置没有问题。一切就绪后,就可以修改您的设置来使用加密。

安装好 OpenSSL 和 stunnel 程序后,请完成以下步骤:

  1. 如果需要的话,请为 stunnel 创建一个用户和组。

    您的 stunnel 包可能已经在安装时完成这项任务,因此可能没必要执行这个步骤。

  2. 以 root 用户的身份键入以下内容(作为一行),生成一个 SSL 证书和私匙:
    # openssl req -new -x509 -days 365 -nodes -out 
       /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem

    系统会要求您提供各种信息,比如您的主机名和电子邮件地址。注意,这个命令创建了一个有效期为 365 天的证书,因此您需要在一年时间内重复这个步骤。

  3. 修改 /etc/stunnel/stunnel.pem 文件上的所有权,以便让步骤 1 中创建的 stunnel 用户和组拥有它。
  4. 创建或修改 /etc/stunnel/stunnel.conf 文件。

    清单 2 展示了一个配置文件样例。如果您的系统已经包含这样一个文件,那么请保持大多数选项不变,但要确保文件的最后三行如清单 2 所示,都是以 [swat] 开头。这些行会告知 stunnel 如何处理 SWAT 连接,具体而言,stunnel 会监听端口 901,并将经过解密的流量传递到端口 902。另外,确保 certkey 行指向此前生成的证书文件。

    清单 2. stunnel 实用工具需要自己的配置文件
    chroot  = /var/lib/stunnel/
    pid     = /stunnel.pid
    setuid  = stunnel
    setgid  = stunnel
     
    debug   = 7
    output  = /var/log/messages
     
    client  = no
    cert    = /etc/stunnel/stunnel.pem
    key     = /etc/stunnel/stunnel.pem
    
    # Accept SSL connections on port 901 and funnel it to
    # port 902 for swat. 
    [swat]
    accept   = 901
    connect  = 902
  5. 在您的 xinetdinetd 配置中创建一个新的 SWAT 条目。

    这个配置应该类似于一个常规的未加密配置,只是它应该监听端口 902 并使用名称 swat-stunnel 而不是 swat。它应该只在本地主机接口上接受连接。

  6. 禁用 xinetdinetd 中的原始 SWAT 配置。
  7. 编辑 /etc/services:
    1. 复制 swat 条目。
    2. 重命名复制的 swat-stunnel
    3. 将端口号更改为 902。
  8. 在某些发行版上,可能需要编辑 /etc/default/stunnel4 以启用 stunnel。具体而言,需要将 ENABLED 行从 0 更改为 1
  9. 重启您的超级服务器。
  10. 启动 stunnel

    通常,您可以以 root 用户身份键入 /etc/initd.d/stunnel start 来临时启动 stunnel,但要永久运行 stunnel,则需要调整您的 SysV 配置。

这些更改就绪之后,就应该能够使用一个加密连接访问 SWAT:在浏览器中将 https:// 而不是 http:// 指定为协议。注意,第一次连接时,您的浏览器可能会提醒您使用了一个未被信任的证书,因为您生成了自己的证书。请接受这个证书。


使用 SWAT

一旦配置好 SWAT,就可以开始使用它。可以使用任何 Web 浏览器访问它。进入 SWAT 后,就可以开始使用 SWAT 来管理您的 Samba 服务器。

访问 SWAT

在 Samba 服务器计算机上使用您钟爱的 Web 浏览器,键入 http://localhost:901 作为 Uniform Resource Locator (URL);或者,如果您已将 SWAT 配置为允许其他计算机访问,那么可以使用能够访问服务器的任何计算机的主机名替换 URL 中的 localhost。如果您已配置 SSL 加密,则可以使用 https:// 替换 URL 开头的 http://。如果您已配置 SWAT 接受本地主机之外的其他登录,那么您可以使用您喜欢的任何操作系统上的 Web 浏览器,比如 Linux、Mac OS X、Windows 等。您甚至可以使用移动电话中的浏览器。

首次访问服务器时,您的 Web 浏览器会提示您输入用户名和密码。请输入 root 作为用户名,并使用 root 密码作为密码。然后,您会看到 SWAT 主页,如图 1 所示。

图 1. SWAT 主页允许您选择 SWAT 的选项
屏幕快照显示 SWAT 控制台,其中包含一些配置按钮,可用于处理 GLOBALS、SHARES、PRINTERS 等部分

Samba 徽标下面的按钮允许您配置特定 Samba 特性:[global] 部分、文件共享、打印机共享等。如果您熟悉如何通过 smb.conf 文件配置 Samba,那么通过 SWAT 配置 Samba 的大部分内容都可以一目了然。

如果您向下滚动 SWAT 主页,将会发现一些 Samba 文档链接。这些文档包括各种 Samba 守护进程的手册页、配置文件、实用工具等。

检查 SWAT 特性

作为 SWAT 配置的一个示例,请单击 GLOBALS。刷新页面,显示可以在 smb.conf 的 [global] 部分中设置的选项,如图 2 所示。如果想查看更多复杂选项,可以单击 Advanced;默认的 Basic 视图只显示最常见的选项。

图 2. 在很多 SWAT 菜单中都可以使用 Web 表单设置选项
屏幕快照显示 Global 参数输入屏幕,其中包含 Basic/Advanced 视图选项、提交和重置值、以及需要编辑的配置字段

仔细阅读这个页面上的可用选项,然后尝试更改一些选项。您必须单击 Commit Changes 才能将您的更改输入 smb.conf 文件并重新加载配置。

如果单击 SHARESPRINTERS,则可以分别编辑文件和打印机共享。这个界面类似于 [globals] 部分的界面,但您必须从一个下拉菜单选择想要编辑的共享,然后单击 Choose Share。您也可以新建一个共享:在 Create Share 按钮旁边的文本字段中键入共享名,然后单击该按钮。

其他按钮允许执行其他操作:

  • WIZARD 按钮会将您带入一个页面,从而允许您快速进行一些常见配置更改,比如设置常见的域配置。
  • STATUS 按钮显示 Samba 服务器的当前状态,比如服务器正在管理多少个活动连接,以及它正在访问什么文件。您还可以启动、停止和重启 smbdnmbdwinbindd 服务器。
  • VIEW 按钮显示当前的 smb.conf 配置文件。
  • PASSWORD 按钮允许您管理用户:更改密码、添加用户、删除用户等。您可以在本地机器或另一个 Server Message Block (SMB)/Common Internet File System (CIFS) 服务器上执行这些操作。

大多数这些特性只允许 root 用户访问。HOMESTATUSVIEWPASSWORD 页允许普通用户访问,但不允许他们访问其中一些选项。普通用户最有可能使用 PASSWORD 页,因为他们能够用它更改自己的密码。


SWAT 警告

SWAT 是一款非常有用的工具;但是,它并非没有局限性或是没有问题。SWAT 最大的局限性在于它不支持 include 指令,该指令可在 smb.conf 中用于将一个配置分割为多个文件,甚至可能包含针对不同客户端的不同配置文件。如果您依赖这类配置,就会发现 SWAT 不够用,至少对于 Samba 配置是这样。(您仍然可以采用 SWAT 来支持用户更改其密码。)

另一个重要的 SWAT 警告是它存在安全风险。要最小化风险,可以将其配置为只接受本地主机登录;如果必须远程登录,可以将其配置为使用 SSL 加密,如前所述。即使采用了这类措施,任何 服务器仍然存在潜在的安全威胁:软件可能存在问题,或者配置方式可能出错。您应该注意这些风险并采取适当的预防措施,比如使用 TCP Wrappers、xinetd 选项或 iptables 防火墙来限制对计算机的访问。服务器在 Internet 上的暴露程度越大,配置的风险也越大。


下期介绍

本系列下一个主题是 LPIC-3 目标 312.6,涉及 Samba 国际化问题,包括如何使用代码页和其他 Samba 选项在 Samba 服务器上支持非英语文件名。

参考资料

学习

获得产品和技术

讨论

  • 加入 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=775878
ArticleTitle=学习 Linux,302(混合环境): SWAT 配置
publish-date=11212011