
1. 项目概述为什么本地用户管理依然是运维的基石在云原生和域控大行其道的今天很多刚接触Windows Server的朋友可能会觉得本地用户和组的管理是不是有点“过时”了毕竟企业环境里Active DirectoryAD域才是身份验证的绝对核心。但根据我十多年的运维经验我可以很负责任地告诉你Windows Server 2016的本地用户管理不仅没过时反而是每一位系统管理员必须精通的“内功心法”。无论是作为域环境中的成员服务器还是作为独立的工作组服务器、边缘服务器、测试环境或特定应用服务器本地安全主体Local Security Principals的管理都无处不在。它直接关系到服务器的访问控制、服务账户的运行权限、文件共享的安全边界甚至是灾难恢复时最后的救命稻草。想象一下当域控制器网络中断你无法用域账户登录一台关键的业务服务器时一个配置得当的本地管理员账户就是你解决问题的唯一钥匙。这个项目就是要彻底拆解Windows Server 2016环境下本地用户和组管理的核心逻辑、实操细节以及那些只有踩过坑才知道的经验技巧。无论你是正在备考MCSA/MCSE的学员还是日常需要维护Windows服务器的运维工程师掌握这套“基本功”都能让你在面对各种复杂场景时心里更有底。2. 核心设计思路理解本地安全账户管理器SAM的运作逻辑在深入点击那些图形化按钮之前我们必须先理解Windows Server是如何在底层管理这些本地账户的。这与域环境有本质区别。2.1 本地账户的存储与边界SAM数据库与AD域将账户信息存储在全局的目录数据库不同本地用户和组的信息存储在本机的SAMSecurity Accounts Manager数据库中。这是一个位于%SystemRoot%\System32\config\SAM的安全文件。这意味着独立性每台Windows Server 2016计算机都拥有自己独立的SAM数据库。你在ServerA上创建的本地用户在ServerB上不存在。边界性本地账户的认证范围仅限于本机。你无法使用ServerA的本地账户去登录ServerB也无法用它访问网络上的其他域资源除非通过特定的凭据传递或映射。安全边界对于成员服务器已加入域的服务器存在两个安全边界本地SAM和域目录。本地管理员可以管理本机SAM但无权管理域账户域管理员默认在每台成员服务器上都有本地管理员权限。理解这个“边界”至关重要。它决定了本地账户的核心应用场景管理本机自身的资源和服务。例如为一个在本机运行的SQL Server服务配置一个本地服务账户或者为本机的某个文件夹设置只允许特定本地用户访问的NTFS权限。2.2 内置账户与默认组系统自带的“脚手架”Windows Server 2016安装完成后SAM数据库并非一张白纸它已经预置了一些关键的账户和组这是系统安全和功能的基础。关键内置本地账户Administrator本地最高权限账户。在安装系统时必须设置密码。出于安全考虑建议重命名此账户并创建一个名为“Administrator”的普通低权限账户作为诱饵。Guest供临时访问的账户默认禁用。在绝大多数生产环境中应保持其禁用状态。DefaultAccount一个系统管理的账户通常禁用用户不应直接使用。WDAGUtilityAccount为Windows Defender Application Guard功能提供上下文的账户通常也无需管理。关键内置本地组Administrators成员拥有对服务器的完全控制权。谨慎添加用户到此组。Users普通用户组成员可以运行应用程序和使用计算机资源但无法进行系统级的修改。Remote Desktop Users允许成员通过远程桌面连接到此计算机。这是赋予用户远程管理权限的常用组比直接放入Administrators组更安全。Backup Operators成员可以绕过文件权限进行备份和还原操作权限很高需严格控制。Guests与Guest账户权限类似。Power Users在旧系统中有较多权限在Windows Server 2016及更新版本中其权限已基本等同于Users组保留主要是为了兼容性。注意一个常见的误解是认为“域用户”属于本地“Users”组。实际上当一台服务器加入域后域中的“Domain Users”全局组会自动被添加到本地的“Users”组中。因此所有域用户在该服务器上都拥有本地Users组的权限。这是一个重要的权限继承关系。3. 实操解析四大管理工具与核心操作要点管理本地用户和组Windows Server 2016提供了多种途径各有其适用场景。3.1 图形化管理计算机管理控制台这是最直观的方式适合一次性操作或初学者。在桌面“此电脑”图标上右键选择“管理”打开“计算机管理”控制台。在左侧树形目录中依次展开“系统工具” - “本地用户和组”。在这里你可以看到“用户”和“组”两个文件夹进行新建、删除、重命名、设置密码、修改属性、添加到组等所有常见操作。实操心得密码策略通过图形界面为用户设置密码时系统会强制要求符合密码复杂性策略如果已启用。但请注意此策略默认受本地安全策略或域组策略影响。用户无法更改密码在用户属性对话框中有一个“用户不能更改密码”的选项。这个选项通常用于服务账户或共享账户确保密码不会被个人随意修改导致服务中断。但若同时勾选了“密码永不过期”则可能违反某些安全合规要求需权衡。账户已禁用这是快速禁用一个账户而不删除它的方法。禁用后该账户将无法用于登录或身份验证。常用于员工离职过渡期或临时锁定账户。3.2 命令行利器Net User 与 Net Localgroup对于习惯命令行或需要批量、脚本化操作的管理员来说net user和net localgroup命令是不可或缺的高效工具。查看所有本地用户net user查看特定用户详情net user [username]创建新用户net user [username] [password] /add例如net user zhangsan Pssw0rd123 /add创建一个名为zhangsan的用户。设置用户密码net user [username] *输入此命令后会提示你输入新密码不显示明文更安全删除用户net user [username] /delete将用户添加到本地组net localgroup [groupname] [username] /add例如net localgroup “Remote Desktop Users” zhangsan /add从本地组移除用户net localgroup [groupname] [username] /delete注意事项在命令行中指定密码时密码会以明文形式出现在命令历史中存在安全风险。在生产环境中更推荐使用*参数交互式输入或通过其他安全方式传递密码如使用Set-LocalUser的-Password参数配合SecureString。组名若包含空格需要用双引号引起来。3.3 现代化脚本PowerShell的威力PowerShell提供了更强大、更面向对象的本地用户管理模块LocalAccounts在较新系统上或通过ADSI接口。这是实现自动化管理的首选。安装模块如果需要Install-WindowsFeature -Name “RSAT-LocalAccount-Management-Package”创建新本地用户New-LocalUser -Name “lisi” -Description “测试账户” -Password (ConvertTo-SecureString “Pssw0rd456” -AsPlainText -Force) -PasswordNeverExpires:$false将用户添加到本地组Add-LocalGroupMember -Group “Administrators” -Member “lisi”查询本地用户信息Get-LocalUser禁用/启用本地用户Disable-LocalUser -Name “lisi” Enable-LocalUser -Name “lisi”修改用户属性Set-LocalUser实操心得ConvertTo-SecureString是安全处理密码的关键。上述示例中-AsPlainText -Force仅用于演示在真实脚本中密码应从安全来源获取如用户输入、加密文件等。PowerShell命令返回的是对象你可以通过管道|进行过滤和进一步操作例如Get-LocalUser | Where-Object {$_.Enabled -eq $true}可以列出所有已启用的用户。3.4 高级管控本地安全策略中的用户权限分配有些权限无法通过简单的“加入组”来赋予需要在“本地安全策略”中精细配置。运行secpol.msc打开本地安全策略。导航到“安全设置” - “本地策略” - “用户权限分配”。在右侧策略列表中你可以找到如“允许本地登录”、“作为服务登录”、“从网络访问此计算机”等关键策略。双击某个策略可以添加或删除被授予该权限的用户或组。核心应用场景作为服务登录如果你有一个自定义的应用程序需要以某个本地用户身份运行Windows服务那么该用户必须被授予此权限。仅仅把它加到Administrators组是不够的。拒绝本地登录你可以创建一个组比如“Contractors”将临时人员加入此组然后为这个组分配“拒绝本地登录”权限。这比从每个用户的属性里禁用账户更便于批量管理。从网络访问此计算机这决定了哪些用户/组能够通过网络如文件共享、命名管道连接到本机。默认情况下Everyone组拥有此权限出于安全考虑在生产环境中通常会移除Everyone并添加具体的授权组如“Domain Users”。4. 核心环节实现服务账户与文件权限的实战配置理解了基本操作我们来看两个最经典的实战场景它们将用户管理和实际资源访问紧密结合起来。4.1 场景一为应用程序配置专用本地服务账户许多中间件或自研应用需要以Windows服务形式运行使用一个专用的、权限受限的本地账户是最佳实践。操作步骤创建账户使用PowerShell或计算机管理创建一个名为svc_MyApp的本地用户。在描述中注明用途。设置强密码设置一个符合复杂性要求的超长强密码。由于是服务账户通常勾选“用户不能更改密码”。授予必要权限用户权限运行secpol.msc在“用户权限分配”中找到“作为服务登录”将svc_MyApp添加进去。文件系统权限找到该应用程序需要读写的数据目录、日志目录等在文件夹的安全属性中添加svc_MyApp用户并赋予“修改”或“读取和执行”等最小必要权限。注册表权限如果需要如果应用需要访问特定注册表项使用regedit右键点击该注册表项 - “权限”添加svc_MyApp并分配相应权限。配置服务打开“服务”管理控制台services.msc找到你的应用服务右键“属性”在“登录”选项卡中选择“此账户”输入.\svc_MyApp注意前面的.\表示本地计算机和密码然后重启服务。避坑技巧避免使用域账户除非应用必须跨服务器访问域资源否则优先使用本地账户。这可以避免因域账户密码过期、账户被锁定或域控制器不可用导致的服务中断。密码永不过期策略对于服务账户通常需要设置密码永不过期并与“用户不能更改密码”一同使用。但务必在ITSMIT服务管理系统中记录该账户和密码并建立定期手动更新密码的流程因为永不过期的强密码也可能随时间变得不安全。权限最小化坚决遵循最小权限原则。不要因为图省事就将服务账户加入Administrators组。仔细分析应用日志和文档只授予它访问特定文件夹、注册表项和作为服务登录的权限。4.2 场景二实现基于本地用户的精细文件共享权限在未加入域的工作组环境中或需要对特定本地文件夹进行额外访问控制时需要结合NTFS权限和共享权限。操作流程规划用户与组假设你需要让部门A用户UserA1, UserA2有读写权限部门BUserB1只有读取权限。可以创建两个本地组LocalGrp_DeptA_RW,LocalGrp_DeptB_RO。将相应用户添加到对应组。设置NTFS权限基础权限在目标文件夹上右键 - “属性” - “安全”选项卡 - “高级”。首先禁用权限继承点击“禁用继承”并选择“将已继承的权限转换为此对象的显式权限”以便获得完全控制权。移除不必要的默认权限条目如“Users”确保权限列表干净。点击“添加”选择“选择主体”输入组名LocalGrp_DeptA_RW赋予“修改”权限。再次“添加”输入组名LocalGrp_DeptB_RO赋予“读取和执行”权限。确保“Administrators”组和“SYSTEM”拥有完全控制权。设置共享权限访问大门在文件夹“属性”的“共享”选项卡中点击“高级共享” - “权限”。共享权限通常只做宽松控制因为真正的精细控制由NTFS权限完成。一个常见的做法是将“Everyone”的共享权限设置为“完全控制”然后在NTFS层面做严格限制。或者为了更清晰可以移除Everyone添加“Authenticated Users”组并赋予“读取”权限。最终权限计算当用户通过网络访问共享文件夹时系统会取共享权限和NTFS权限中更严格的一个。因此上述配置下UserA1通过网络访问时其最终有效权限是“修改”NTFS决定。UserB1通过网络访问时其最终有效权限是“读取”NTFS决定。任何其他未在NTFS中授权的用户即使能通过共享大门如Authenticated Users也会在NTFS大门前被拒绝。注意事项权限累加与拒绝优先用户权限是其所有所属组权限的累加。但如果对用户或组显式设置了“拒绝”权限则“拒绝”优先于任何“允许”。所有权文件夹的“所有者”可以更改其权限即使当前所有者没有任何访问权限。在重置权限时可能需要先取得所有权。5. 常见问题与排查技巧实录即使按照规范操作在实际环境中仍会遇到各种问题。下面是我总结的几个典型问题及其排查思路。5.1 问题一用户无法通过远程桌面连接现象用户账户已被添加到“Remote Desktop Users”组但远程连接时仍提示“用户账户限制”或“拒绝访问”。排查步骤确认组成员身份在服务器上运行net localgroup “Remote Desktop Users”检查该用户是否确实在列表中。注意组名拼写和空格。检查“允许通过远程桌面服务登录”权限运行secpol.msc查看“用户权限分配”下的“允许通过远程桌面服务登录”。确保“Remote Desktop Users”组或该用户本身在此策略中。这是最关键的一步在某些严格的安全配置下可能只授权了特定组。检查网络级身份验证NLA在服务器的系统属性 - 远程设置中如果启用了“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”而客户端系统如Windows XP的旧版RDP客户端不支持NLA也会被拒绝。可临时取消勾选测试但长期出于安全考虑不建议。检查防火墙确保服务器防火墙的“入站规则”中“远程桌面TCP-In”规则是启用的并且作用域Scope允许来自客户端IP的连接。检查用户账户状态确认账户未禁用、密码未过期、未锁定。5.2 问题二服务无法启动日志显示“登录失败”现象配置了本地服务账户的Windows服务启动失败事件查看器中出现错误代码“1069”或“登录失败”。排查步骤核对账户名和密码在服务属性中账户名格式应为.\用户名或计算机名\用户名。密码是否输入正确注意大小写。确认“作为服务登录”权限这是最常见的原因。使用secpol.msc或PowerShell命令Get-LocalUser -Name “svc_account” | Select-Object -Property *查看账户的PasswordNeverExpires等属性并确保在“用户权限分配”中已授予该账户“作为服务登录”的权利。检查账户的本地策略在“本地安全策略” - “安全设置” - “本地策略” - “用户权限分配”中检查该账户是否被意外添加到了“拒绝作为服务登录”或“拒绝本地登录”策略中。检查密码永不过期设置如果服务账户密码设置了过期时间并且已过期也会导致登录失败。对于服务账户通常建议勾选“密码永不过期”但要做好离线记录和管理。文件/注册表权限如果服务启动时需要访问某个特定的配置文件或注册表项而服务账户没有权限也可能在后期初始化阶段失败。需要检查应用程序事件日志中更具体的错误信息。5.3 问题三本地用户管理单元或命令报错“拒绝访问”现象即使使用管理员账户登录在打开“计算机管理”中的“本地用户和组”时提示“拒绝访问”或“命名空间无法访问”。排查步骤检查用户账户控制UAC即使你是管理员在标准令牌下运行MMC管理单元也可能权限不足。尝试右键点击“计算机管理”选择“以管理员身份运行”。检查SAM注册表键权限这是一个更深层次的问题。可能SAM数据库对应的注册表项权限被破坏。键路径是HKEY_LOCAL_MACHINE\SAM\SAM。默认情况下即使是Administrators组也无法访问。需要先取得该键的所有权并为Administrators组赋予“完全控制”权限。此操作风险极高务必谨慎并建议在操作前备份注册表或创建系统还原点。系统文件检查运行sfc /scannow检查并修复可能受损的系统文件。安全软件冲突某些过于激进的安全软件可能会锁定对SAM的访问。尝试临时禁用安全软件如防病毒、主机入侵防护等后测试。5.4 问题速查表问题现象可能原因优先排查点远程桌面连接被拒权限不足或策略限制1. 用户是否在“Remote Desktop Users”组2. “允许通过远程桌面服务登录”策略是否有该用户/组3. 用户账户是否被禁用/锁定服务启动失败1069服务账户登录问题1. 账户/密码是否正确2. 账户是否有“作为服务登录”权限3. 账户密码是否已过期无法访问共享文件夹权限组合问题1. NTFS权限是否授予相应用户/组2. 共享权限是否过于严格3. 防火墙是否阻止了SMB端口445本地用户管理单元打不开权限或系统损坏1. 是否以管理员身份运行2. SAM注册表权限是否异常3. 运行sfc /scannow检查系统。用户密码修改被拒密码策略或账户设置1. 新密码是否符合复杂性/历史策略2. 账户属性是否勾选了“用户不能更改密码”3. 是否为普通用户尝试修改其他用户密码管理Windows Server 2016的本地用户和组远不止是点点鼠标。它要求你对操作系统的安全模型有清晰的认识对权限的继承和叠加有透彻的理解并能灵活运用图形界面、命令行和脚本工具来应对各种场景。从为一个简单的文件共享设置权限到为一个关键业务服务配置一个坚如磐石的服务账户每一步都体现着系统管理员对安全、稳定和可管理性的权衡。记住最安全的系统不是功能最多的系统而是权限配置最清晰、最精简的系统。每次添加一个用户到管理员组每次授予一个“完全控制”权限前多问一句“真的有必要吗”这习惯能帮你避免未来许多棘手的麻烦。