在本文中,将学习以下概念:
- Samba Web Administration Tool (SWAT) 特性概述
- 安装和设置 SWAT
- 使用 SWAT 配置 Samba
本文帮助您准备 Linux Professional Institute's (LPI) Mixed Environment 特性考试 (302) 的主题 312 下的目标 312.5。该目标的权值为 4。
本文假设您拥有 Linux 命令行函数的工作知识,理解 Samba 配置的基础知识。您应该熟悉 smb.conf 配置文件的总体结构。您还应该理解服务器通常是如何运行的,包括使用 System V (SysV) 启动脚本和超级服务器。
在 Samba 3.x 版中,SWAT 是一个单独的服务器,独立于两个主要的 Samba 服务器:smbd 和 nmbd。因此,您必须将它配置为独立于主 Samba 服务器运行。根据您安装 Samba 的方式,有可能需要单独安装 SWAT。为增加安全性,您可能想将 SWAT 配置为通过 Secure Sockets Layer (SSL) 加密运行。
注意:仍处于开发阶段的 Samba 4 进行了一些重要的架构更改,其中包括对 SWAT 的重要更改。本文描述 Samba 3.x 中的 SWAT 的状态,Samba 3.x 是目前推荐用于生产环境的 Samba 版本。
如果您像目标 311.1 中所述那样从源代码构建 Samba,那么 SWAT 应该随其他 Samba 组件一起默认构建并安装。configure
的 --disable-swat 选项会导致 SWAT 不被编译。如果您想显式启用 SWAT,而不是依赖默认设置,那么您可以将 --enable-swat 传递给 configure。
如果您使用发行版维护者提供的二进制程序包安装 Samba,那么您应该检查您的程序包,确定如何安装 SWAT。许多发行版都提供一个名为 swat 或 samba-swat 的程序包,其中包含 SWAT 服务器。这个程序包必须与基本 Samba 程序包分开安装;但是,它可以自动安装。使用您的打包工具,查看您的系统上有什么程序包。
如果您不能找到一个单独的 SWAT 程序包,那么它可能已经安装为另一个 Samba 程序包的一部分。毫不奇怪,SWAT 二进制文件名为 swat,因此您可以搜索该文件,查看您的计算机上是否有 SWAT。如果您正在使用 Gentoo Linux,请注意,当您使用 samba 程序包来构建 SWAT 时,必须将 swat 设置为一个 USE 标志。
安装好 SWAT 后,下一步是运行它。SWAT 被设计为通过超级服务器(比如 xinetd 或 inetd)运行。由于这些超级服务器的配置差别很大,因此我会单独描述它们。
目前,大多数 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 中的指南来运行。如果没有任何超级服务器正在运行,那么您可能需要安装 xinetd 或 inetd。
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,那么配置过程类似于 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 配置的方法来完成这项任务。
如前所述,标准 SWAT 配置不支持加密。如果您已限制对本地主机的访问(如前面展示的 xinetd 配置所示),或者您已使用 TCP Wrappers 实现了类似的限制,那么这不成问题。但是,如果您使用 SWAT 进行远程访问,不加密就运行它意味着您的 root 密码将以没有加密的形式通过您的网络。这种风险是难以承受的,尤其是需要使用 SWAT 从 Internet 上的一台计算机而不是从 Samba 服务器所在的子网中的计算机配置 Samba 时。
要提高安全性,可以将 SSL 加密添加到您的 SWAT 配置。为此,必须安装额外的软件并更改配置。所需的软件是 OpenSSL 和 stunnel。大多数发行版的包数据库都包含这两个包,因此安装应该比较简单。
注意:最好首先在没有 SSL 加密的情况下配置和测试 SWAT。这样,您就会知道服务器在最简单的配置下是否能够按照预期的方式运行。如果遇到问题,您可以调试它们,并确信 SSL 配置没有问题。一切就绪后,就可以修改您的设置来使用加密。
安装好 OpenSSL 和 stunnel 程序后,请完成以下步骤:
- 如果需要的话,请为
stunnel创建一个用户和组。您的
stunnel包可能已经在安装时完成这项任务,因此可能没必要执行这个步骤。 - 以 root 用户的身份键入以下内容(作为一行),生成一个 SSL 证书和私匙:
# openssl req -new -x509 -days 365 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem
系统会要求您提供各种信息,比如您的主机名和电子邮件地址。注意,这个命令创建了一个有效期为 365 天的证书,因此您需要在一年时间内重复这个步骤。
- 修改 /etc/stunnel/stunnel.pem 文件上的所有权,以便让步骤 1 中创建的
stunnel用户和组拥有它。 - 创建或修改 /etc/stunnel/stunnel.conf 文件。
清单 2 展示了一个配置文件样例。如果您的系统已经包含这样一个文件,那么请保持大多数选项不变,但要确保文件的最后三行如清单 2 所示,都是以
[swat]开头。这些行会告知stunnel如何处理 SWAT 连接,具体而言,stunnel会监听端口 901,并将经过解密的流量传递到端口 902。另外,确保cert和key行指向此前生成的证书文件。
清单 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
- 在您的
xinetd或inetd配置中创建一个新的 SWAT 条目。这个配置应该类似于一个常规的未加密配置,只是它应该监听端口 902 并使用名称
swat-stunnel而不是swat。它应该只在本地主机接口上接受连接。 - 禁用
xinetd或inetd中的原始 SWAT 配置。 - 编辑 /etc/services:
- 复制
swat条目。 - 重命名复制的
swat-stunnel。 - 将端口号更改为 902。
- 复制
- 在某些发行版上,可能需要编辑 /etc/default/stunnel4 以启用
stunnel。具体而言,需要将ENABLED行从0更改为1。 - 重启您的超级服务器。
- 启动
stunnel。通常,您可以以 root 用户身份键入
/etc/initd.d/stunnel start来临时启动stunnel,但要永久运行stunnel,则需要调整您的 SysV 配置。
这些更改就绪之后,就应该能够使用一个加密连接访问 SWAT:在浏览器中将 https:// 而不是 http:// 指定为协议。注意,第一次连接时,您的浏览器可能会提醒您使用了一个未被信任的证书,因为您生成了自己的证书。请接受这个证书。
一旦配置好 SWAT,就可以开始使用它。可以使用任何 Web 浏览器访问它。进入 SWAT 后,就可以开始使用 SWAT 来管理您的 Samba 服务器。
在 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 的选项
Samba 徽标下面的按钮允许您配置特定 Samba 特性:[global] 部分、文件共享、打印机共享等。如果您熟悉如何通过 smb.conf 文件配置 Samba,那么通过 SWAT 配置 Samba 的大部分内容都可以一目了然。
如果您向下滚动 SWAT 主页,将会发现一些 Samba 文档链接。这些文档包括各种 Samba 守护进程的手册页、配置文件、实用工具等。
作为 SWAT 配置的一个示例,请单击 GLOBALS。刷新页面,显示可以在 smb.conf 的 [global] 部分中设置的选项,如图 2 所示。如果想查看更多复杂选项,可以单击 Advanced;默认的 Basic 视图只显示最常见的选项。
图 2. 在很多 SWAT 菜单中都可以使用 Web 表单设置选项
仔细阅读这个页面上的可用选项,然后尝试更改一些选项。您必须单击 Commit Changes 才能将您的更改输入 smb.conf 文件并重新加载配置。
如果单击 SHARES 或 PRINTERS,则可以分别编辑文件和打印机共享。这个界面类似于 [globals] 部分的界面,但您必须从一个下拉菜单选择想要编辑的共享,然后单击 Choose Share。您也可以新建一个共享:在 Create Share 按钮旁边的文本字段中键入共享名,然后单击该按钮。
其他按钮允许执行其他操作:
- WIZARD 按钮会将您带入一个页面,从而允许您快速进行一些常见配置更改,比如设置常见的域配置。
- STATUS 按钮显示 Samba 服务器的当前状态,比如服务器正在管理多少个活动连接,以及它正在访问什么文件。您还可以启动、停止和重启
smbd、nmbd和winbindd服务器。 - VIEW 按钮显示当前的 smb.conf 配置文件。
- PASSWORD 按钮允许您管理用户:更改密码、添加用户、删除用户等。您可以在本地机器或另一个 Server Message Block (SMB)/Common Internet File System (CIFS) 服务器上执行这些操作。
大多数这些特性只允许 root 用户访问。HOME、STATUS、VIEW 和 PASSWORD 页允许普通用户访问,但不允许他们访问其中一些选项。普通用户最有可能使用 PASSWORD 页,因为他们能够用它更改自己的密码。
SWAT 是一款非常有用的工具;但是,它并非没有局限性或是没有问题。SWAT 最大的局限性在于它不支持 include 指令,该指令可在 smb.conf 中用于将一个配置分割为多个文件,甚至可能包含针对不同客户端的不同配置文件。如果您依赖这类配置,就会发现 SWAT 不够用,至少对于 Samba 配置是这样。(您仍然可以采用 SWAT 来支持用户更改其密码。)
另一个重要的 SWAT 警告是它存在安全风险。要最小化风险,可以将其配置为只接受本地主机登录;如果必须远程登录,可以将其配置为使用 SSL 加密,如前所述。即使采用了这类措施,任何 服务器仍然存在潜在的安全威胁:软件可能存在问题,或者配置方式可能出错。您应该注意这些风险并采取适当的预防措施,比如使用 TCP Wrappers、xinetd 选项或 iptables 防火墙来限制对计算机的访问。服务器在 Internet 上的暴露程度越大,配置的风险也越大。
本系列下一个主题是 LPIC-3 目标 312.6,涉及 Samba 国际化问题,包括如何使用代码页和其他 Samba 选项在 Samba 服务器上支持非英语文件名。
学习
-
Samba SWAT 官方文档 提供关于如何配置和使用 SWAT 的其他信息。
-
在 LPIC Program 站点查找 LPI 的 Linux 系统管理认证的三个级别的详细目标、任务列表和样例问题。特别是要查看 LPI-302
详细目标 和 任务和样例问题。
- 复习 developerWorks 上的整个 LPI 考试备考系列,学习 Linux 基础知识,根据 2009 年 4 月以前的 Linux 考试目标准备系统管理员认证考试。
-
修订后的 LPIC 考试备考资源 提供一列由 LPI 维护的其他认证培训资源。
- 观看 developerWorks 演示中心,包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
- 在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。
- 在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。
- 随时关注 developerWorks 技术活动和网络广播。
获得产品和技术
-
stunnel网站 提供关于这个程序的下载和文档。 -
OpenSSL 网站 提供关于这个软件的下载和文档。
讨论
- 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。