28.9. 为 Microsoft® Windows® 客户机提供文件和打印服务 (Samba)

Contributed by Murray Stokely.

28.9.1. 纵览

Samba 是一个流行的开源软件包, 它提供了针对 Microsoft® Windows® 客户机的文件和打印服务。 这类客户机可以连接并使用 FreeBSD 系统上的文件空间, 就如同使用本地的磁盘一样, 或者像使用本地打印机一样使用 FreeBSD 上的打印机。

Samba 软件包可以在您的 FreeBSD 安装盘上找到。 如果您没有在初次安装 FreeBSD 时安装 Samba, 则可以通过 net/samba34 port 或 package 来安装。

28.9.2. 配置

默认的 Samba 配置文件会以 /usr/local/share/examples/samba34/smb.conf.default 的名字安装。这个文件必须复制为 /usr/local/etc/smb.conf 并进行定制, 才能开始使用 Samba

smb.conf 文件中包含了 Samba 的运行时配置信息, 例如对于打印机的定义, 以及希望共享给 Windows® 客户机的 共享文件系统Samba 软件包包含了一个称为 swat 的 web 管理工具, 后者提供了配置 smb.conf 文件的简单方法。

28.9.2.1. 使用 Samba Web 管理工具 (SWAT)

Samba Web 管理工具 (SWAT) 是一个通过 inetd 运行的服务程序。 因此, 需要把 /etc/inetd.conf 中下面几行的注释去掉, 才能够使用 swat 来配置 Samba

swat   stream  tcp     nowait/400      root    /usr/local/sbin/swat    swat

Example 28.1, “重新加载 inetd 配置文件” 中所介绍的那样, 在修改了这个配置文件之后, 必须让 inetd 重新加载配置, 才能使其生效。

一旦在 inetd.conf 中启用了 swat, 就可以用浏览器访问 connect to http://localhost:901 了。 您将首先使用系统的 root 帐号登录。

只要成功地登录进了 Samba 配置页面, 就可以浏览系统的文档, 或从 Globals(全局) 选项卡开始配置了。 Globals 小节对应于 [global] 小节中的变量, 前者位于 /usr/local/etc/smb.conf 中。

28.9.2.2. 全局配置

无论是使用 swat, 还是直接编辑 /usr/local/etc/smb.conf, 通常首先要配置的 Samba 选项都是:

workgroup

NT 域名或工作组名, 其他计算机将通过这些名字来找到服务器。

netbios name

这个选项用于设置 Samba 服务器的 NetBIOS 名字。 默认情况下, 这是所在主机的 DNS 名字的第一部分。

server string

这个选项用于设置通过 net view 命令, 以及某些其他网络工具可以查看到的关于服务器的说明性文字。

28.9.2.3. 安全配置

/usr/local/etc/smb.conf 中的两个最重要的配置, 是选定的安全模型, 以及客户机上用户的口令存放后端。 下面的语句控制这些选项:

security

最常见的选项形式是 security = sharesecurity = user。 如果您的客户机使用用户名, 并且这些用户名与您的 FreeBSD 机器一致, 一般应选择用户级 (user) 安全。 这是默认的安全策略, 它要求客户机首先登录, 然后才能访问共享的资源。

如果采用共享级 (share) 安全, 则客户机不需要用有效的用户名和口令登录服务器, 就能够连接共享的资源。 这是较早版本的 Samba 中的默认值。

passdb backend

Samba 提供了若干种不同的验证后端模型。 您可以通过 LDAP、 NIS+、 SQL 数据库, 或经过修改的口令文件, 来完成客户端的身份验证。 默认的验证模式是 smbpasswd, 这也是本章将介绍的全部内容。

假设您使用的是默认的 smbpasswd 后端, 则必须首先创建一个 /usr/local/etc/samba/smbpasswd 文件, 来允许 Samba 对客户进行身份验证。 如果您打算让 UNIX® 用户帐号能够从 Windows® 客户机上登录, 可以使用下面的命令:

# smbpasswd -a username

Note:

目前推荐使用的后端是 tdbsam, 您应使用下面的命令来添加用户帐号:

# pdbedit -a -u username

请参考 官方的 Samba HOWTO 以了解关于配置选项的进一步信息。 按照前面给出的基本描述, 您应该已经可以启动 Samba 了。

28.9.3. 启动 Samba

net/samba34 port 会增加一个新的用于控制 Samba 的启动脚本。 要启用这个脚本, 以便用它来完成启动、 停止或重启 Samba 的任务, 需要在 /etc/rc.conf 文件中加入:

samba_enable="YES"

此外, 也可以进行更细粒度的控制:

nmbd_enable="YES"
smbd_enable="YES"

Note:

这也同时配置了在系统引导时启动 Samba

配置好之后, 就可以在任何时候通过下面的命令来启动 Samba 了:

# /usr/local/etc/rc.d/samba start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.

请参见 Section 12.7, “在 FreeBSD 中使用 rc” 以了解关于使用 rc 脚本的进一步信息。

Samba 事实上包含了三个相互独立的服务程序。 您应该能够看到 nmbdsmbd 两个服务程序都是通过 samba 脚本启动的。 如果在 smb.conf 中启用了 winbind 名字解析服务, 则应该可以看到 winbindd 服务被启动起来。

可以在任何时候通过下面的命令来停止运行 Samba

# /usr/local/etc/rc.d/samba stop

Samba 是一个复杂的软件包, 它提供了用于与 Microsoft® Windows® 网络进行集成的各式各样的功能。 要了解关于这里所介绍的基本安装以外的其它功能, 请访问 http://www.samba.org

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.