samba共享成功需三要素:装全smbd/nmbd服务包、配置workgroup/security/map to guest全局参数、开放137-139/445端口并设置selinux上下文。

直接能用的 Samba 共享,核心就三件事:装对包、配对用户、开对端口。缺一不可,少一步 Windows 就连不上。
确认 samba 服务进程是否完整安装
很多“连不上”问题其实卡在第一步——smbd 和 nmbd 没装全。只装 samba 包不一定够,尤其在较新发行版上。
- Debian/Ubuntu 系统必须装全:
sudo apt install samba samba-common-bin cifs-utils - RHEL/CentOS/Rocky/AlmaLinux 系统推荐:
sudo yum install samba samba-client samba-common -y(samba-client提供smbclient工具,调试必备) - 验证是否到位:
systemctl list-unit-files | grep -E "(smb|nmb)",应看到smb.service和nmb.service都处于enabled或至少static - 如果只有
smb没有nmb,Windows 可能搜不到你的机器名(但手动输入\IPshare仍可访问)
配置文件里最容易漏掉的三个关键项
/etc/samba/smb.conf 不是写完共享段就完事。全局段([global])里这三个配置不设,Windows 连接常报“错误 0x80070035”或“找不到网络路径”。
-
workgroup = WORKGROUP:必须和 Windows 客户端的“工作组”一致(默认就是WORKGROUP,别写成HOME或空格) -
security = user:这是最常用也最稳妥的认证模式;别用share(已弃用)或ads(需域环境) -
map to guest = bad user:当用户输错账号时降级为访客访问(配合guest ok = yes才有效),否则直接拒绝,连错误提示都不给
示例片段:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
log file = /var/log/samba/%m
max log size = 50
smbpasswd 用户必须对应系统用户
执行 smbpasswd -a username 前,username 必须已是 Linux 系统用户(id username 能查到)。否则 Windows 输入正确密码也会提示“登录失败”。
- 创建系统用户(无 shell 登录权限更安全):
sudo useradd -s /sbin/nologin smbuser - 再加进 Samba 数据库:
sudo smbpasswd -a smbuser - 检查是否成功:
sudo pdbedit -L应列出该用户 - 共享段中用
valid users = smbuser限定访问,别写错大小写或空格 - 如果想允许多个用户,用
valid users = @sambashare,并确保用户已加入sambashare组(sudo usermod -aG sambashare smbuser)
防火墙和 SELinux 是 Windows 连不上的两大隐形杀手
即使配置全对,90% 的“无法访问”都栽在这俩身上。它们不报错,只静默丢包。
- 防火墙要放行四个端口:
137/udp、138/udp、139/tcp、445/tcp。用firewall-cmd更可靠:sudo firewall-cmd --permanent --add-service=samba && sudo firewall-cmd --reload - SELinux 启用时,共享目录必须打上
samba_share_t标签:sudo semanage fcontext -a -t samba_share_t "/srv/samba/shared(/.*)?",然后sudo restorecon -Rv /srv/samba/shared - 临时关闭 SELinux 测试用:
sudo setenforce 0(仅调试,勿长期关闭) - Windows 端记得关掉“快速启动”和“远程差分压缩”,它们有时干扰 SMB 连接
最后提醒一句:Samba 共享路径的 Linux 文件权限(chmod/chown)和 Samba 配置中的 valid users 是双重校验。两者都满足,Windows 用户才能真正读写。很多人只改了配置,忘了 chgrp sambashare /path && chmod 2775 /path,结果看着能连,点进去却提示“拒绝访问”。










