32.10. 用于 Microsoft® Windows® 客户端的文件和打印服务(Samba)

Samba 是一个流行的开源软件包,它使用 SMB / CIFS 协议提供文件和打印服务。该协议内置于 Microsoft® Windows® 系统中。可以通过安装 Samba 客户端库将其添加到非 Microsoft® Windows® 系统中。该协议允许客户端访问共享数据和打印机。这些共享可以映射为本地磁盘驱动器,共享打印机可以像使用本地打印机一样使用。

在 FreeBSD 上,Samba 客户端库可以使用软件包或 port 来安装 net/samba413。客户端为 FreeBSD 系统提供了访问 Microsoft® Windows® 网络中的 SMB/CIFS 共享的功能。

FreeBSD 系统也可以通过安装相同的软件包或 port net/samba413 来配置充当为 Samba 服务器。这允许管理员在 FreeBSD 系统上创建共享 SMB/CIFS,运行 Microsoft® Windows® 或 Samba 客户端库的客户端可以访问这些共享。

32.10.1. 服务器配置

Samba 在 /usr/local/etc/smb4.conf 中进行配置。必须先创建此文件,然后才能使用 Samba。

此处显示了一个简单的 smb4.conf,用于与工作组中的 Windows® 客户端共享目录和打印机。对于涉及 LDAP 或 Active Directory 的更复杂的设置,使用 samba-tool(8) 创建初始 smb4.conf 会更容易。

[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = ExampleMachine
wins support = Yes
security = user
passdb backend = tdbsam

# Example: share /usr/src accessible only to 'developer' user
[src]
path = /usr/src
valid users = developer
writable  = yes
browsable = yes
read only = no
guest ok = no
public = no
create mask = 0666
directory mask = 0755

32.10.1.1. 全局设置

描述网络的设置添加到 /usr/local/etc/smb4.conf 中:

  • ``workgroup``

    要提供服务的工作组的名称。

  • ``netbios name``

    已知 Samba 服务器的 NetBIOS 名称。默认情况下,它与主机 DNS 名称的第一个组件相同。

  • ``server string``

    将在 net view 的输出中显示的字符串,以及一些其他网络工具,这些工具试图显示有关服务器的描述性文本。

  • ``wins support``

    Samba 是否将充当 WINS 服务器。不要在网络上的多台服务器上启用对 WINS 的支持。

32.10.1.2. 安全设置

/usr/local/etc/smb4.conf 中最重要的设置是安全模型和后端密码格式。这些指令控制选项:

  • ``security``

    最常见的设置是 security = sharesecurity = user。如果客户端使用的用户名与它们在 FreeBSD 机器上的用户名相同,则应使用用户级安全性。这是默认的安全策略,它要求客户端先登录才能访问共享资源。在共享级别安全性中,客户端在尝试连接到共享资源之前,不需要使用有效的用户名和密码登录到服务器。这是旧版 Samba 的默认安全模型。

  • ``passdb backend``

    Samba 有几种不同的后端认证模式。客户端可以通过 LDAP、NIS+、SQL 数据库或修改后的密码文件进行认证。推荐的身份验证方法 tdbsam 非常适合于简单的网络,本文将对此进行介绍。对于更大或更复杂的网络,建议使用 ldapsamsmbpasswd 是以前的默认值,现在已经过时了。

32.10.1.3. Samba 用户

FreeBSD 用户帐户必须映射到 SambaSAMAccount 数据库,Windows® 客户端才能访问共享。使用 pdbedit(8) 可映射现有的 FreeBSD 用户帐户:

# pdbedit -a -u username

本节仅提及最常用的设置。有关可用配置选项的其他信息,请参阅 Samba 官方 Wiki

32.10.2. 启动 Samba

要在引导时启用 Samba,请将以下行添加到 /etc/rc.conf

samba_server_enable="YES"

现在就启动 Samba:

# service samba_server start
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.

Samba 由三个独立的守护进程组成。守护程序 nmbd 和 smbd 都是由samba_enable 启动的。如果还需要域名解析 winbind,请设置:

winbindd_enable="YES"

可以随时通过键入以下内容来停止 Samba:

# service samba_server stop

Samba 是一个复杂的软件套件,其功能允许与 Microsoft® Windows® 网络广泛集成。有关此处说明的基本配置之外的功能的详细信息,请参阅 https://www.samba.org