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

Contributed by Murray Stokely.

30.9.1. 纵览

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

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

30.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 文件的简单方法。

30.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

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

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

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

30.9.2.2. 全局配置

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

workgroup

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

netbios name

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

server string

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

30.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

注意:

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

# pdbedit -a -u username

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

30.9.3. 启动 Samba

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

samba_enable="YES"

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

nmbd_enable="YES"
smbd_enable="YES"

注意:

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

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

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

请参见 第 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有问题,请先阅读 文档,如不能解决再联系 <[email protected]>.

关于本文档的问题请发信联系 <[email protected]>.