装对服务、配好用户、通开端口是windows访问linux samba共享的三大前提:必须安装并启用smbd与nmbd服务,配置workgroup、security=user和map to guest=bad user三项全局参数,创建系统用户并用smbpasswd添加至samba数据库,同时开放137-139/445端口(tcp/udp)并设置目录权限与selinux上下文。

装对服务、配好用户、通开端口,三步到位就能让 Windows 顺利访问 Linux 共享文件夹。不复杂,但漏掉任何一环都会连不上。
安装 Samba 并确认服务就绪
只装 samba 包往往不够,必须确保 smbd(文件服务)和 nmbd(主机名广播)两个进程都存在并能启动。
- Debian/Ubuntu 系统:运行
sudo apt update && sudo apt install samba samba-common-bin cifs-utils - RHEL/CentOS/Rocky/AlmaLinux:运行
sudo dnf install samba samba-client samba-common-tools - 安装后检查:执行
systemctl list-unit-files | grep -E "(smb|nmb)",应看到smb.service和nmb.service均为 enabled 或 static - 立即启用并启动:
sudo systemctl enable --now smbd nmbd
配置 smb.conf 的关键项不能少
/etc/samba/smb.conf 是核心,全局段([global])里三项必须明确,否则 Windows 很可能报“找不到网络路径”或反复弹密码框。
-
workgroup = WORKGROUP—— 必须和 Windows 控制面板 → 网络和共享中心 → 高级共享设置里显示的“工作组”一致(默认就是 WORKGROUP) -
security = user—— 推荐模式,基于系统用户认证;避免使用已废弃的share模式 -
map to guest = bad user—— 输错密码时自动转为访客访问(配合共享段的guest ok = yes才生效),否则直接拒绝且无提示 - 在文件末尾添加共享节,例如:
[shared]<br>path = /srv/samba/shared<br>browseable = yes<br>writable = yes<br>valid users = @sambashare
创建共享目录并设对权限
目录得让 Samba 进程读写,也得让指定用户有操作权,SELinux 启用时还得打标签。
- 新建目录:
sudo mkdir -p /srv/samba/shared - 建组并加用户:
sudo groupadd sambashare,再把用户加入该组,如sudo usermod -aG sambashare alice - 设属组与权限:
sudo chgrp sambashare /srv/samba/shared,然后sudo chmod 2775 /srv/samba/shared(SGID 保证新建文件继承组) - 若 SELinux 启用:
sudo semanage fcontext -a -t samba_share_t "/srv/samba/shared(/.*)?",再sudo restorecon -Rv /srv/samba/shared
添加 Samba 用户并验证访问
Samba 用户不是独立账号,而是映射到已有系统用户,密码也单独存于 Samba 数据库。
- 确保系统用户已存在:
id alice能查到,且最好禁用 shell 登录:sudo useradd -s /sbin/nologin alice - 添加到 Samba:
sudo smbpasswd -a alice(输入两次密码) - 检查是否成功:
sudo pdbedit -L应列出alice: - Windows 访问方式:
Win+R → \192.168.x.xshared,输入alice及刚设的 Samba 密码 - 防火墙务必放行:
sudo ufw allow 137:139/tcp、sudo ufw allow 445/tcp、sudo ufw allow 137:139/udp、sudo ufw allow 445/udp











