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** 会更容易。 .. raw:: latex \diilbookstyleinputcell .. code:: shell-session [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 = share`` 和 ``security = user``\ 。如果客户端使用的用户名与它们在 FreeBSD 机器上的用户名相同,则应使用用户级安全性。这是默认的安全策略,它要求客户端先登录才能访问共享资源。在共享级别安全性中,客户端在尝试连接到共享资源之前,不需要使用有效的用户名和密码登录到服务器。这是旧版 Samba 的默认安全模型。 - **``passdb backend``** Samba 有几种不同的后端认证模式。客户端可以通过 LDAP、NIS+、SQL 数据库或修改后的密码文件进行认证。推荐的身份验证方法 ``tdbsam`` 非常适合于简单的网络,本文将对此进行介绍。对于更大或更复杂的网络,建议使用 ``ldapsam``\ 。\ ``smbpasswd`` 是以前的默认值,现在已经过时了。 32.10.1.3. Samba 用户 ~~~~~~~~~~~~~~~~~~~~~ FreeBSD 用户帐户必须映射到 ``SambaSAMAccount`` 数据库,Windows® 客户端才能访问共享。使用 `pdbedit(8) `__ 可映射现有的 FreeBSD 用户帐户: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # pdbedit -a -u username 本节仅提及最常用的设置。有关可用配置选项的其他信息,请参阅 `Samba 官方 Wiki `__\ 。 32.10.2. 启动 Samba ------------------- 要在引导时启用 Samba,请将以下行添加到 **/etc/rc.conf**\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session samba_server_enable="YES" 现在就启动 Samba: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service samba_server start Performing sanity check on Samba configuration: OK Starting nmbd. Starting smbd. Samba 由三个独立的守护进程组成。守护程序 nmbd 和 smbd 都是由\ ``samba_enable`` 启动的。如果还需要域名解析 winbind,请设置: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session winbindd_enable="YES" 可以随时通过键入以下内容来停止 Samba: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service samba_server stop Samba 是一个复杂的软件套件,其功能允许与 Microsoft® Windows® 网络广泛集成。有关此处说明的基本配置之外的功能的详细信息,请参阅 `https://www.samba.org `__\ 。