samba共享配置失败主因是权限、selinux、防火墙、用户映射四层遗漏:selinux需打标签,防火墙要放行137-139/445端口,用户须用smbpasswd注册,目录权限需匹配linux+selinux+smb.conf三重控制。

直接说结论:Samba共享配置失败,90%不是因为smb.conf写错,而是权限、SELinux、防火墙、用户映射这四层漏掉一层就挂。
为什么smb.conf配对了却连不上?
常见现象是 Windows 输入 \192.168.x.x 后弹出登录框,输完账号密码提示“找不到网络路径”或“拒绝访问”。这不是配置语法问题,而是底层拦住了:
-
smbd进程没跑起来(systemctl status smb看状态) - SELinux 拦截:即使目录权限是
777,SELinux 默认禁止 samba 访问普通目录,必须打标签:semanage fcontext -a -t samba_share_t '/path(/.*)?'+restorecon -RvvF /path - 防火墙没放行端口:
smbd用139/tcp和445/tcp,nmbd用137/udp和138/udp;CentOS/RHEL 8+ 默认用firewalld,要加服务:firewall-cmd --permanent --add-service=samba - 用户没加进 Samba 数据库:
useradd foo只建了系统用户,还得smbpasswd -a foo才能登录;匿名访问要设guest ok = yes+map to guest = bad user
共享目录权限怎么设才不踩坑?
别迷信 chmod 777。Samba 实际检查三重权限:Linux 文件权限 + SELinux 上下文 + smb.conf 中的 valid users/write list。实操建议:
- 目录属主设为
samba用户组(如chown :sambashare /share),再chmod 2775 /share(带 SGID,新文件自动继承组) - 避免用 root 或普通用户直接当共享属主,容易触发 SELinux 强制策略
- 若只允许特定用户写,用
write list = @sambawriters,别写writable = yes+valid users = ...混用,后者只控制读,不控制写 - 测试时先关 SELinux(
setenforce 0)和防火墙(systemctl stop firewalld),确认功能再逐个开回来
smb.conf 最小可用配置长什么样?
新手最容易被示例文件里几百行注释吓住。一个能用的最小共享段只需 5 行,其余全删掉(备份原文件!):
Python Linux版 为 Python.org 官方提供的 Python 3.14.6 Linux/Unix 源码包,适合在Linux/Unix环境中安装、运行 Python 代码并学习函数、模块和脚本开发。
[myshare] comment = My Linux Share path = /srv/samba/myshare valid users = alice,bob writable = yes browseable = yes
注意点:
-
path必须是绝对路径,且目录已存在(mkdir -p /srv/samba/myshare) -
valid users里的名字必须是已存在的系统用户,且已用smbpasswd -a加入 Samba - 不要在全局段(
[global])里写security = user—— 现代 Samba(4.11+)默认就是它,显式写反而可能冲突 - 改完配置必须
testparm检查语法,再systemctl reload smb(不是 restart)
Windows 连不上时该查哪几条命令?
别一上来就重装 Samba。按顺序执行这四条命令,基本定位问题:
-
systemctl status smb nmbd—— 看两个服务是否 active (running) -
ss -tlnp | grep -E ':(139|445)'—— 确认smbd真监听了端口(不是被其他进程占了) -
smbclient -L //localhost -U%—— 本地用匿名方式列共享,成功说明服务和配置通,失败说明配置或权限问题 -
tail -n 20 /var/log/samba/log.smbd—— 最后 20 行日志,错误信息比弹窗提示直白得多,比如 “Connection refused” 是端口问题,“NT_STATUS_ACCESS_DENIED” 是权限或用户问题
最常被忽略的是 SELinux 上下文和 smbpasswd 用户注册 —— 它们不报语法错误,但让整个流程静默失败。










