28.2 Samba 文件共享

Samba 概述

Samba 是服务器消息块(Server Message Block,SMB)与通用互联网文件系统(Common Internet File System,CIFS)协议的自由软件重新实现,其核心目标在于实现 UNIX 系统与 Windows 网络环境之间的互操作性。

就体系结构而言,smbd(文件与打印服务守护进程)与 nmbd(NetBIOS 名称服务守护进程)协同工作:smbd 处理文件共享与打印服务请求,nmbd 提供 NetBIOS 名称解析与网络浏览服务。

Samba 需要在防火墙中放行以下端口:

协议
端口
服务
必需条件

TCP

139

NetBIOS 会话服务

仅 SMBv1(NT1)协议时方为必需

TCP

445

SMB over TCP

始终必需

UDP

137

NetBIOS 名称服务

仅 SMBv1(NT1)协议时方为必需

UDP

138

NetBIOS 数据报服务

仅 SMBv1(NT1)协议时方为必需

若配置 min protocol = SMB2 及以上,可仅开放 TCP 445。

Samba 作者 Andrew Tridgell 在开发早期因项目原名“smbserver”已被 Syntax 公司(其商业产品 TotalNet Advanced Server 拥有该名称商标)主张商标权而须更名,新名称通过 Unix 命令 grep -i '^s.*m.*b' /usr/share/dict/words 从系统词典中搜索按顺序包含 s、m、b 三个字母的单词而得,“Samba”即由此而来。需要指出的是,“samba”在葡萄牙语及英语中亦有“桑巴舞”之义,此为词形上的巧合。

软件安装

Samba 有两种主要安装方式:

  • 使用 pkg 安装:

# pkg install samba420

警告

Samba 4.20.x 已被上游标记为停止维护(Discontinued upstream),FreeBSD Ports 中 samba420 已标记为 DEPRECATED。建议新部署使用 samba422 或更新版本。

  • 或使用 Ports 安装:

  • 查看安装信息:

相关项目结构

基础配置

  • 将 Samba 服务设置为开机启动:

  • 创建 /usr/local/etc/smb4.conf 文件,写入以下内容并保存:

注释说明:

配置项
说明

[global]

全局配置段,适用于所有共享项

min protocol = SMB2

将最小支持协议限制为 SMB2,以便较新版本 Windows 访问

[root]

定义共享 root

comment = root's stuff

该共享的描述信息,Windows 资源管理器浏览共享时将显示此文本

path = /root

共享的实际路径为 /root不建议 在生产环境中共享该目录

public = no

不允许匿名访问(等价于 guest ok = no

browseable = yes

可在网络邻居中浏览该共享

writable = yes

允许客户端写入该目录

printable = no

本共享非打印机共享

create mask = 0755

新建文件的默认权限为 0755,即属主可读写,组用户与其他用户仅可读取

  • 创建 Samba root 用户,并设置密码:

技巧

Samba 仅识别已纳入其内部数据库的账号,因此需将 FreeBSD 用户账户映射至 Samba 账号数据库后,Windows 客户端方可访问共享。可使用 pdbedit(8) 将已有的 FreeBSD 用户账户 ykla 映射至 Samba:

pdbedit(8) 支持基于 smbpasswd、ldap、nis+ 与 tdb 等多种后端的用户数据库。

  • 启动 Samba 服务

  • 查看 Samba 服务的运行状态:

Samba 包含 nmbd、smbd 及 winbindd 三个守护进程,其中 nmbd 与 smbd 由 samba_server_enable 统一管理,winbindd 须通过 winbindd_enable 单独启用。

  • 在 Windows 系统中访问共享文件夹:同时按下 Windows 徽标键 + R 组合键以打开“运行”对话框,输入以下 UNC 路径(请将示例 IP 地址替换为实际值):

Windows 访问网络共享资源

在凭据提示框中输入 Samba 用户名 root 及其密码:

键入 Samba 用户名

连接成功:

连接 Samba

域成员配置

系统参数优化

Kerberos 认证

配置名称服务

配置 NSS,使系统依次通过本地文件与 Winbind 解析用户记录:

配置 NSS,使系统依次通过本地文件与 Winbind 解析组记录:

Samba 主配置文件

上述 testshare 共享段中 create modeforce create mode 两项用于实际运行时调整新建文件的权限,属可选配置:

加入域

服务自启动配置

Kerberos 认证验证

Winbind 服务验证

wbinfo 命令返回错误,可重启 Samba 服务后再次验证:

共享目录配置

如仅允许属主可读写、属组仅可读取,可执行:

如仅允许属主可读写、属组及其他用户均不可访问,可执行:

故障排除

Samba 日志文件默认位于 /var/log/samba4 目录下,文件名以 log. 为前缀并附带客户端主机名,可据此排查连接与认证故障。

参考文献

最后更新于