Windows Server 2025 / SMB 共享和 NTFS 权限如何协同工作

通过服务器消息块(Server Message Block,SMB)访问网络共享时,所执行的操作必须同时获得共享权限和 NTFS(New Technology File System,新技术文件系统)权限的允许。即使 NTFS 允许“修改”,共享权限只有“读取”时也不能写入。通过服务器本地文件路径访问时,仍需满足 NTFS 权限,但不进行共享权限检查。

准备新文件夹和普通用户组

准备已加入 ad.example.test 的成员服务器 FS1,并使用磁盘与卷实验中的 NTFS 数据卷 D:。labuser1 应属于安全组 GG_LabUsers,且不是管理员。使用有权安装角色和管理文件夹的账户登录 FS1,通过文件资源管理器创建新的空文件夹 D:\LabShares\LabRead。如果该文件夹或 LabRead 共享已经存在,请先确认用途,不要直接修改。

SMB 用于通过网络共享文件。整个实验使用相同的正常服务器名称和域凭据,路径为 \\fs1.ad.example.test\LabRead。可参阅 Microsoft 的 SMB 说明。在 FS1 上以管理员权限打开 PowerShell:第一条命令查询文件服务器角色,只有需要安装时才执行第二条,并确认安装成功。还应检查域防火墙配置文件及适用于隔离实验网络的 SMB 入站规则,不要关闭防火墙或向互联网开放 SMB。

Get-WindowsFeature FS-FileServer
Install-WindowsFeature FS-FileServer

设置 NTFS 读取权限

  1. 在 FS1 上打开新文件夹的“属性 → 安全 → 高级”,检查继承的条目,并记录初始配置。
  2. 仅对此空文件夹选择“禁用继承”,将继承的权限转换为显式条目。转换不会删除这些权限,仍需逐项检查它们授予了什么访问权。
  3. 保留 SYSTEM 和管理员所需的“完全控制”权限,不要移除用于管理文件夹或恢复访问的条目。
  4. 检查 Users、Authenticated Users、Everyone 以及 labuser1 所属的其他组。仅在此实验文件夹中移除或限制不必要的宽泛授权,避免测试用户从其他组获得写入权限。
  5. 添加 AD\GG_LabUsers,允许“读取和执行”“列出文件夹内容”和“读取”。本实验将应用范围设置为此文件夹、子文件夹和文件,确认组正确后保存。

上述继承调整仅用于这个新建的空实验文件夹,不要对现有数据目录树或 D: 根目录照做。先记录原始条目及其应用范围。Windows 访问控制模型会考虑组和继承关系。应建立清楚、必要的“允许”条目,不要为了抵消来源不明的宽泛授权而不断增加“拒绝”条目。

创建共享并检查两层权限

  1. 打开“属性 → 共享 → 高级共享”,选中“共享此文件夹”,将共享名设为 LabRead,然后打开“权限”。
  2. 检查默认条目,添加 AD\GG_LabUsers,并只允许共享“读取”权限。移除不必要的宽泛授权,防止测试账户通过其他组获得“更改”或“完全控制”。
  3. 保留必要的管理员管理权限,不要向普通用户授予“完全控制”。分别确认权限窗口和共享窗口中的更改。
  4. 分别记录共享名 LabRead、本地文件夹路径、共享权限条目和 NTFS 条目,将其作为两套独立配置。
Get-SmbShare -Name 'LabRead' | Select-Object Name,Path
Get-SmbShareAccess -Name 'LabRead'
(Get-Acl -LiteralPath 'D:\LabShares\LabRead').Access | Select-Object IdentityReference,FileSystemRights,AccessControlType,IsInherited

在 FS1 上执行这些查询。Name 应为 LabRead,Path 应为新文件夹路径;Get-SmbShareAccess 应显示 GG_LabUsers 的共享权限为 Allow 和 Read。Get-Acl 可以检查账户或组、文件系统权限、允许或拒绝,以及是否继承。New-SmbShare 参数管理的是共享权限,与文件系统的访问控制列表(Access Control List,ACL)相互独立。创建共享不会自动设置所需的 NTFS ACL。

这里简化后的 Get-Acl 输出没有列出全部权限传播细节。请到“安全 → 高级”检查“应用于”的范围。下一节创建 readme.txt 后,还要检查该文件实际获得的权限条目。IsInherited 为 False 只表示条目是显式设置的,不代表权限配置一定正确。查看权限清单也不能替代从 CLIENT1 进行的实际访问测试。

访问 SMB 网络共享必须同时通过共享权限和 NTFS 权限检查;本地文件路径访问不检查共享权限

从 CLIENT1 测试实际访问

  1. 作为 FS1 管理员,在实验文件夹中新建 readme.txt,写入容易识别的内容,并在客户端测试前关闭文件。
  2. 以 labuser1 身份在 CLIENT1 上建立新的登录会话,检查 whoami 和 whoami /groups,确认域账户及 GG_LabUsers 组成员身份。如果刚更改过组成员身份,先注销再重新登录,以更新访问令牌。
  3. 在 CLIENT1 的文件资源管理器中打开 \\fs1.ad.example.test\LabRead,读取 readme.txt。整个比较过程保持使用同一个服务器名称。
  4. 尝试新建文件,并尝试保存对 readme.txt 的修改。预期读取成功,写入被拒绝;如果可以写入,应先重新检查所有组权限以及 SMB 连接的实际身份,再继续实验。

不要使用已经以管理员身份建立的 SMB 连接测试普通用户权限。Windows 可能对同一服务器重复使用已有凭据。先检查连接并保存工作;如需重新建立测试会话,只关闭本实验相关连接,不要断开无关共享。如果文件夹无法打开,应区分名称解析、SMB 连通性、身份验证失败和文件访问被拒绝,不要把授予“完全控制”当作所有连接问题的通用解决办法。

每次只更改一层权限进行比较

共享权限 NTFS 权限 本实验预期的网络访问结果
读取 读取 可以读取;创建、修改和删除应失败。
读取 修改 可以读取;共享的“读取”权限仍会阻止写入。
更改(Change) 修改(Modify) 验证能够创建、编辑和删除测试文件。

先只把 AD\GG_LabUsers 的 NTFS 条目改为“修改”,保留原应用范围和共享“读取”权限。保存后用测试身份重新打开共享,确认创建或修改文件仍然被拒绝。接着只把共享权限改为“更改”,再测试创建、编辑和删除一个小文件。记录每种状态下各项操作的结果。表格采用简化授权条件;其他组成员身份、拒绝条目、继承关系和应用范围都可能影响有效权限,因此必须检查实际 ACL。

完成后,将 GG_LabUsers 的共享权限恢复为“读取”,NTFS 条目恢复为原来的“读取和执行”“列出文件夹内容”“读取”,并保留原应用范围。再次确认 labuser1 能读取 readme.txt,但不能写入。管理员只能通过已获授权的本地路径清理本实验产生的指定测试文件;为后续课程保留文件夹、共享和记录。停止共享并不等于删除文件夹中的数据,也不要通过删除有用文件或用户组来撤销实验。