首页/系统/信创系统运维速查/Samba 服务端共享配置
迁移适配65 条

Samba 服务端共享配置

信创主机作为文件服务器:smb.conf 定义共享、smbpasswd 建账号、防火墙与 SELinux 放行;Windows 客户端按 \\地址\共享名 访问。

信创系统运维速查系统更新于 2026-10-13

Samba 解决什么需求

Samba 在 Linux 上实现 SMB/CIFS 协议,让 Windows 客户端能像访问共享目录一样访问 Linux 主机的目录。典型场景是信创主机充当部门文件服务器:smb.conf 定义共享与权限,smbpasswd 维护独立的 Samba 账号口令,网络侧放行服务所需端口,SELinux 侧放开相应布尔值。三者缺一个,客户端就会挂在『无法访问』上。

基本信息

软件包samba(服务端 smb、nmb),客户端为 samba-client
主配置/etc/samba/smb.conf
口令管理smbpasswd -a 用户(独立于系统口令)
服务单元smb.service、nmb.service
网络放行firewall-cmd --add-service=samba
SELinuxsamba_export_all_rw 等布尔值、共享目录标签
权限要求root 配置与建账号;共享目录属主按业务设定

典型使用场景

  • 信创主机为 Windows 办公终端提供共享目录
  • 部门内文件集中存放,替代分散的本地共享
  • 迁移过程中临时搭建共享,保证文档流转不断档
  • 为扫描仪、打印设备提供 SMB 落地目录
  • 备份系统通过 SMB 把数据写到 Linux 存储

配置示例 /etc/samba/smb.conf

配置示例 /etc/samba/smb.conf
[global]
   workgroup = WORKGROUP          # 工作组名,与客户端环境保持一致
   security = user                # 使用 Samba 自身账号认证
   map to guest = never           # 禁止匿名映射,避免意外匿名访问

[share]
   path = /srv/share              # 共享目录,需存在且属主/权限合理
   browseable = yes               # 在网络邻居中可见
   writable = yes                 # 允许写入
   valid users = ops              # 只允许指定账号访问
   create mask = 0644             # 新建文件权限
   directory mask = 0755          # 新建目录权限

账号与生效

账号与生效
dnf install -y samba                                  # 安装服务端
useradd -s /sbin/nologin ops 2>/dev/null               # 系统账号,禁止交互登录
smbpasswd -a ops                                       # 设置 Samba 专用口令
systemctl enable --now smb nmb                         # 启动并设为自启
testparm -s                                             # 检查配置语法(改完必做)
firewall-cmd --add-service=samba --permanent && firewall-cmd --reload
getsebool -P samba_export_all_rw on                    # SELinux 按需放开共享写权限
smbclient -L localhost -U ops                          # 本机回环验证共享列表

核查点与现象

检查项命令或方式异常现象
配置语法testparm -s语法错会导致服务起不来
服务状态systemctl status smb未运行则客户端连接超时
账号存在pdbedit -L只建了系统账号没建 Samba 账号会认证失败
端口放行firewall-cmd --list-services连接超时或立即被拒
SELinuxgetsebool -a | grep samba能连上但读写被拒,日志有 AVC
目录权限ls -ld /srv/share认证通过但无法写入
客户端访问smbclient -L 或 \\地址\共享名名称解析问题多见于未启动 nmb
SELinux 环境下共享目录的标签与布尔值要一起调:调试顺序建议为 testparm 查语法 → 本机 smbclient 回环验证 → 再看防火墙与 SELinux,逐层排除。
Samba 账号与系统账号是两套口令:只创建系统用户而不执行 smbpasswd -a,认证必然失败,这是最常见的初次配置问题。

易错点

  • 改完 smb.conf 不执行 testparm 直接重启,语法错误导致服务起不来,客户端集体无法访问
  • 只建了系统账号没建 Samba 账号,客户端反复提示认证失败
  • 共享目录已放行但 SELinux 拦截写入,日志里出现 AVC,被误判为目录权限问题反复改 chmod
  • 为图省事把 map to guest 设成 bad user 或开启匿名写入,公网或大内网环境出现无认证写入口
  • 共享目录设置为全局可写而 create mask 与 directory mask 不匹配业务需求,新建文件权限异常引发业务报错

数据来源与参考

  • Samba 官方文档(samba.org)
  • man 5 smb.conf
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌