环境: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 2019SMB2/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、老设备❌ 免密
PublicAWindows 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 端连接步骤

  1. 资源管理器地址栏输入 \\10.0.0.3\PublicA
  2. 用户名填 username,密码填 Samba 短密码
  3. 勾选「记住我的凭据」
  4. 以后连 PublicA 就像群晖一样直接进,无需再开来宾登录

八、总结

  • 免密 + 账号并存:Samba 用两个共享指向同一目录,一个 guest ok = yes(免密),一个 valid users(认证)。
  • Win11 收紧的时间线:guest 从 Win10 1709 起逐步禁用,Win11 24H2 又叠加了 SMB 签名强制,所以新装 Win11 必连不上免密共享。
  • 一劳永逸:让 Win11 走账号认证(和群晖一致),以后任何新装 Win11 都不用手动开「不安全来宾登录」。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注