必须关闭Samba访客映射并配置valid users才能强制账号认证:删除guest ok = yes,添加valid users = %S或具体用户名,设置map to guest = Never和usershare allow guests = No,重启服务后Windows访问将弹出凭据窗口。

要在统信UOS局域网共享中取消匿名访问、强制要求账号认证,必须关闭Samba的访客映射机制并确保共享段明确拒绝guest访问,否则Windows设备会跳过凭据弹窗直接以空用户尝试连接,导致“登录失败”或“找不到网络路径”。
图形界面共享后手动禁用访客模式
该方式适用于已通过文件管理器创建共享但误启“允许匿名访问”、或系统默认写入guest ok = yes的场景,需直接编辑Samba配置文件修正策略。
打开终端,执行:sudo nano /etc/samba/smb.conf。
在文件末尾找到你创建的共享段(如[shared]),删除其中的guest ok = yes这一行;若该行不存在,则跳过此步。
在共享段内确认存在valid users = %S或明确列出用户名(如valid users = user1, user2),这是强制账号认证的核心指令——没有它,Samba将默认接受任意用户(包括空用户)访问。
保存退出后,执行:sudo systemctl restart smbd nmbd。重启后,Windows资源管理器访问\UOS_IP时将强制弹出凭据窗口,且仅接受smbpasswd注册过的用户登录。
终端配置时从源头杜绝匿名访问
此方法用于全新配置共享,避免图形界面遗留隐患,所有认证逻辑由配置文件显式定义,不依赖图形层开关状态。
方法一:全局禁止访客映射
编辑smb.conf:sudo nano /etc/samba/smb.conf。
定位到[global]段落,在其末尾添加:
map to guest = Never
usershare allow guests = No
方法二:共享段内双重锁定
在你的共享定义块(如[shared])中,必须同时包含以下两行:
guest ok = no
valid users = $USER(或具体用户名)
缺一不可:仅设guest ok = no而无valid users,Samba仍可能放行本地系统用户;仅设valid users而未关guest ok,访客仍可绕过。
【警告:若此前已启用nobody账户并配置guest account = nobody,必须同步注释或删除该行,否则map to guest = Never将失效】
完成编辑后,运行:sudo systemctl restart smbd nmbd。
验证账号强制是否生效
第一步:确认Samba服务正在运行 → 执行sudo systemctl is-active smbd,返回active即为正常。
第二步:检查共享是否加载认证约束 → 执行sudo smbstatus -v | grep -A5 "shared",输出中必须出现guest account: [blank]和valid users: your_username字样。
第三步:从Windows端实测 → 打开资源管理器,输入\UOS_IP → 弹出凭据框且无法跳过 → 输入正确的Samba用户名与密码后成功进入 → 表示账号强制已生效。

















