Windows本身不运行Samba,而是通过内置SMB/CIFS服务实现共享;Linux客户端需确保Windows启用SMB2+、配置共享与NTFS权限、关闭密码保护或提供凭据,并开放防火墙规则后,方可成功访问。
windows 本身不运行 samba 服务,而是作为 smb/cifs 客户端或服务器参与跨平台共享。要让 linux 客户端通过 samba(即 cifs 协议)访问 windows 共享目录,关键不是在 windows 上“配置 samba”,而是正确启用并配置 windows 自带的 smb 文件共享服务,并开放对应权限和网络策略。
确认 SMB 服务已启用
Windows 默认启用 SMB 1.0/2.0/3.0,但部分新版系统(如 Win10/11)可能默认禁用 SMB1(不安全),而 Linux 的 smbclient 或 mount -t cifs 通常依赖 SMB2+,所以需确保 SMB2/SMB3 已启用:
- 以管理员身份打开 PowerShell,运行:
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol - 若
EnableSMB2Protocol为 False,执行:Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force - 无需启用 SMB1(除非旧版 Linux 内核强制要求)
设置共享文件夹及基本共享权限
右键目标文件夹 →「属性」→「共享」选项卡 →「高级共享」:
- 勾选「共享此文件夹」,设置一个**无空格、纯英文**的共享名(如
winshare) - 点击「权限」→ 确保「Everyone」或指定用户有「读取」或「更改」权限(Linux 访问时将使用该权限级别)
- 注意:此处是“共享权限”,仅控制通过网络访问的粗粒度操作,还需配合 NTFS 权限生效
配置 NTFS 安全权限(关键步骤)
切换到「安全」选项卡 →「编辑」→「添加」→ 输入 Everyone 或具体用户(如 Guest),然后赋予所需权限:
- 如需 Linux 用户能读写,至少勾选:
✔ 读取和执行
✔ 列出文件夹内容
✔ 读取
✔ 写入 - 若使用 Guest 账户访问(免密),需确保「Guest」账户已启用(
net user guest /active:yes),且未被组策略禁用 - 推荐做法:创建专用低权限用户(如
linuxuser),在共享权限 + NTFS 权限中均授予对应访问权,避免依赖 Everyone
调整网络发现与防火墙规则
确保 Linux 能发现并连通 Windows 共享:
- 进入「控制面板 → 网络和 Internet → 网络和共享中心 → 高级共享设置」:
✔ 启用「网络发现」
✔ 启用「文件和打印机共享」
✔ 关闭「密码保护的共享」(若希望免密访问)或保留开启(需提供 Windows 用户凭据) - 防火墙放行 SMB 流量:
「高级安全 Windows Defender 防火墙」→「入站规则」→ 启用以下规则:
▪ File and Printer Sharing (SMB-In)
▪ Function Discovery (UPnP-In)(可选,辅助发现)
Linux 端访问方式参考
配置完成后,Linux 可直接挂载或浏览:
- 查看共享:
smbclient -L //192.168.x.x -N(-N 表示匿名,若关闭密码保护) - 挂载共享(需安装
cifs-utils):sudo mount -t cifs //192.168.x.x/winshare /mnt/win -o username=linuxuser,password=xxx,uid=1000,gid=1000,iocharset=utf8 - 若提示
mount error(13): Permission denied,大概率是 NTFS 权限未放开或防火墙拦截
不复杂但容易忽略 —— Windows 共享是否可用,取决于 SMB 协议栈、共享权限、NTFS 权限、网络策略四者同时满足。少一个环节,Linux 就会报错“拒绝访问”或“无法列出资源”。


















