Samba 共享免密与账号认证并存:一次解决 Win11 连不上 NAS 的老问题
环境:Debian + Samba(NAS,内网 10.0.0.3),客户端 Windows 11
一、问题现象
- 每次新装 Windows 11,访问 NAS 的 SMB 共享
\\10.0.0.3就连不上; - 非要去系统设置里开「本地来宾登录 / 不安全来宾登录」才能连;
- 但群晖(黑群晖)的共享却能直接连,无需任何设置。
二、根本原因
区别在于认证方式不同:
| 群晖 | 我的 Debian Samba | |
|---|---|---|
| 认证方式 | 账号 + 密码(用户认证) | 匿名来宾(guest) |
| 关键配置 | 默认要账号 | map to guest = bad user + guest ok = yes |
| Win11 态度 | ✅ 允许 | ❌ 默认禁止 |
为了方便内网电视等访问,我的 Samba 被配成了「谁都能匿名免密访问」,而 Windows 11 默认禁用这种「不安全来宾登录」,所以连不上;群晖走账号密码认证,Win11 认可,所以能直接连。
三、Windows 认证时间线(微软官方依据)
| 时间 / 版本 | 变化 |
|---|---|
| Windows 2000 起 | 停用访客访问,阻止 SMB2/3 客户端访客身份验证 |
| Windows 10 1709 / Server 2019 | SMB2/3 客户端默认不再允许 guest 访问远程服务器、不再回退 guest |
| KB5003173(2021-05) | 该行为扩展到 1709、1803、1903、1909、2004、20H2、21H1 |
| Win11 Pro Insider 25267 | 默认禁止 guest 认证 |
| Win11 24H2 / Server 2025 | 默认强制 SMB 签名,导致 guest 认证兼容问题 |
一句话总结:**guest(免密)访问从 Win10 1709 开始逐步被禁用,到 Win11(尤其是 24H2 之后)已经默认全面收紧**,这就是「新装 Win11 必连不上」的时间线来源。
四、解决方案:一个目录,两个共享
思路:Samba 里配置两个共享指向 同一个目录:/mnt/Public
| 共享名 | 谁来用 | 是否要密码 |
|---|---|---|
| Public | 手机、电视、Linux、老设备 | ❌ 免密 |
| PublicA | Windows 11 | ✅ 要账号密码 |
Public保留guest ok = yes,给不支持账号的设备用;PublicA设guest ok = no+valid users = username,给 Win11 用,绕开 guest 限制。
五、完整配置(/etc/samba/smb.conf)
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = debian
security = user
map to guest = bad user # 保留!这是"免密"能工作的关键
guest account = nobody
dns proxy = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
# 认证共享:给 Win11 用
[PublicA]
path = /mnt/Public
browseable = yes
guest ok = no # 关键:此共享不允许免密
valid users = youland # 只允许 youland 账号
writable = yes
force user = root
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
# 免密共享:给其他设备用
[Public]
path = /mnt/Public
browseable = yes
public = yes
available = yes
oplocks = yes
map archive = no
guest ok = yes
writable = yes
force user = root
六、关键知识点
1. Samba 密码 ≠ 系统密码
Samba 密码和系统登录密码是两套独立的东西,互不影响:
| 系统密码 | Samba 密码 | |
|---|---|---|
| 用于 | SSH / 本地登录 | 访问共享 |
| 存储 | /etc/shadow | /var/lib/samba/private/passdb.tdb |
| 可不同 | ✅ | ✅ |
所以可以给 username 设一个很短的 Samba 专用密码,完全不影响 SSH 长密码。
2.系统用户转 Samba 用户
smbpasswd -a username # 把系统用户 username 加进 Samba,并设密码
3.重启生效
systemctl restart smbd nmbd
七、Windows 端连接步骤
- 资源管理器地址栏输入
\\10.0.0.3\PublicA - 用户名填
username,密码填 Samba 短密码 - 勾选「记住我的凭据」
- 以后连
PublicA就像群晖一样直接进,无需再开来宾登录
八、总结
- 免密 + 账号并存:Samba 用两个共享指向同一目录,一个
guest ok = yes(免密),一个valid users(认证)。 - Win11 收紧的时间线:guest 从 Win10 1709 起逐步禁用,Win11 24H2 又叠加了 SMB 签名强制,所以新装 Win11 必连不上免密共享。
- 一劳永逸:让 Win11 走账号认证(和群晖一致),以后任何新装 Win11 都不用手动开「不安全来宾登录」。