16.7 Samba 文件共享

Samba 概述

Samba 是对服务器消息块/通用 Internet 文件系统(Server Message Block/Common Internet File System,SMB/CIFS)协议的自由软件重新实现。CIFS 是 SMB 的衍生协议,为跨平台文件与打印服务提供了标准接口。其核心目标是实现 Unix 系统与 Windows 网络环境的互操作性。

从技术架构上,Samba 通过 smbd(文件与打印服务守护进程)和 nmbd(NetBIOS 名称服务守护进程)两个核心组件协同工作,实现了与 Windows 网络环境的无缝集成。smbd 负责处理文件共享与打印服务请求,nmbd 提供 NetBIOS 名称解析与网络浏览功能。

Samba 需要在防火墙上开放 TCP 端口 139(NetBIOS 会话服务)、445(SMB over TCP)和 UDP 端口 137(NetBIOS 名称服务)、138(NetBIOS 数据报服务)。这些端口是 SMB/CIFS 协议正常工作所必需的网络通信端口。

“Samba”一词在葡萄牙语和英语中也指“桑巴舞”,具有热情奔放的含义。

软件安装

本节介绍如何安装 Samba,有两种主要安装方式可供选择。

  • 使用 pkg 安装:

# pkg install samba420
  • 或使用 Ports 安装:

# cd /usr/ports/net/samba420/ 
# make install clean

安装后信息

# pkg info -D samba420
samba420-4.20.7_4:
On install:  # 安装提示:
How to start: http://wiki.samba.org/index.php/Samba4/HOWTO  
如何启动:参见官方指南

* Your configuration is: /usr/local/etc/smb4.conf
* 你的配置文件路径是:/usr/local/etc/smb4.conf

* All the relevant databases are under: /var/db/samba4
* 所有相关数据库位于:/var/db/samba4

* All the logs are under: /var/log/samba4
* 所有日志位于:/var/log/samba4

* Provisioning script is: /usr/local/bin/samba-tool
* # 初始化脚本路径为:/usr/local/bin/samba-tool

For the working DNS updates you will need to either build dns/bind9* 
# 若要正常使用 DNS 更新功能,需要:
with the enabled GSSAPI(GSSAPI_MIT5 is recommended) or install        
# 要么构建启用了 GSSAPI(推荐 GSSAPI_MIT5)的 dns/bind9*,
dns/samba-nsupdate package, which is preconfigured with such a support. 
# 要么安装 dns/samba-nsupdate 包,它已预配置了所需支持。

You will need to specify location of the 'nsupdate' command in the    
smb4.conf file:
# 你需要在 smb4.conf 中指定 nsupdate 命令的位置:

    nsupdate command = /usr/local/bin/samba-nsupdate -g  # 示例配置

For additional documentation check: https://wiki.samba.org/index.php/User_Documentation  
# 更多文档请查阅:

Port related bug reports can go to the https://gitlab.com/samba-freebsd/ports/-/issues or  
# 和 FreeBSD port 相关的问题请提交到:

to the FreeBSD Bugzilla https://bugs.freebsd.org/

# 所有 Samba 本身相关的问题请提交到:
All Samba related bug reports should go to the: https://bugzilla.samba.org/  

基础配置

安装完成后,需要进行基本配置才能使用 Samba。

  • 将 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:新建文件默认权限为 755,所有者读写,组和其他用户只读。


  • 创建 samba root 用户,并配置密码:

  • 启动 Samba 服务

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

  • 在 Windows 下使用如下命令访问共享文件夹(以实际 IP 为准,请勿照抄!)。

在 Windows 系统中访问共享文件夹的操作说明:按下 Windows 键 + R(小写 r 也可)打开“运行”对话框。

在对话框中输入以下路径(请将示例 IP 地址和共享文件夹名替换为实际值),访问网络共享资源:\\192.168.179.150

输入刚才创建的用户名 root,以及密码:

连接成功:

域成员配置

网络地址配置

使用如下命令配置:

主机名设置

在安装系统的时候应该都配置了主机名,你可以在 /etc/rc.conf 文件编辑设置主机名为 fb

域名系统配置

编辑 /etc/resolv.conf 文件,写入:

系统参数调优

Kerberos 认证配置

名称服务切换配置

配置 NSS 使用本地文件和 Winbind 进行用户信息查询:

配置 NSS 使用本地文件和 Winbind 进行组信息查询:

Samba 主配置文件

上文“testshare”共享配置中最后两行用于优化实际使用的权限(可选)

域加入操作

服务自启动配置

Kerberos 认证验证

Winbind 服务验证

如果 wbinfo 命令显示报错,重启 Samba 服务:

共享目录配置

如果仅允许属主可读写,属组只读,可使用以下命令设置:

如果仅允许属主可读写,属组和其他用户不可访问,可使用以下命令设置:

故障排除与未竟事宜

Samba 日志文件位于 /var/log/samba4

最后更新于