SMB 服务错误排查

适用场景:

  • smb 服务起不来

  • CIFS 连接失败

  • Windows / Linux 无法访问共享

  • 提示 “无法连接到套接字 / 拒绝访问”


一句话原则

先确认服务能不能跑,再看配置,最后看网络和权限


一、第一步:看 smb 服务本身起没起来(最关键)

查看服务状态

systemctl status smbd

重点看:

  • active (running) → 服务是活的

  • failed / exit-code不用看配置,先修服务


二、第二步:查看 smb 启动失败日志(首选)

systemd 日志(最重要)

journalctl -u smbd -xe

能看出什么?

  • 程序是否存在(如 /usr/sbin/smbd

  • 是否因为缺文件、权限、依赖失败

  • 是否被 systemd 强制终止

📌 常见致命错误:

No such file or directory
status=203/EXEC

👉 程序都没了,配置一定不是问题


三、第三步:查看 Samba 自身日志文件

默认日志目录

/var/log/samba/

常见文件:

  • log.smbd(最重要)

  • log.nmbd

  • log.<客户端IP>

查看方式

less /var/log/samba/log.smbd
grep -i error /var/log/samba/log.smbd

📌 适合查:

  • 认证失败

  • 共享路径错误

  • 权限 / 用户问题


四、第四步:快速判断是“服务问题”还是“配置问题”

1️⃣ 配置检测(服务能跑的前提下)

testparm
  • 有 error → 配置错误

  • 没 error → 配置基本没问题


2️⃣ 看 smb 端口是否监听

ss -lntp | grep smbd

或:

netstat -lntp | grep smbd

📌 常见端口:

  • 445

  • 139

没监听 → smbd 实际没跑起来


五、第五步:客户端连不上时再看内核日志

dmesg | grep -i cifs

或:

journalctl | grep -i cifs

📌 常见问题:

  • 连接不上 socket

  • 服务端拒绝连接

  • 协议版本不匹配


六、典型问题 → 排查顺序对照表

现象

优先做

smbd 启动失败

journalctl -u smbd

提示 No such file

检查 samba 包

配置改了起不来

testparm

能起但连不上

log.smbd

客户端报错

dmesg / CIFS

偶尔断连

journalctl


七、最常见问题结论(经验)

  • smbd 起不来 → 90% 是包或文件问题

  • 连接失败但服务正常 → 配置 / 权限

  • CIFS socket 错误 → 服务未启动或端口未监听


八、排查口诀(记住就够)

服务状态先看 systemctl
起不来先看 journalctl
能起再看 Samba 日志
最后才怀疑配置和权限

九、最小排查清单(3 分钟版)

systemctl status smbd
journalctl -u smbd -xe
testparm
ls /var/log/samba/