两级权限取最严
访问一个共享文件要过两道闸:先看共享本身放不放行这个账号,再看文件系统上的 NTFS 权限允不允许这项操作。两次判定都通过才成功,所以有效权限等于两者的交集——任何一个「不够」都会拒绝。共享权限只有三档(读取、更改、完全控制),粒度粗;NTFS 权限能精确到具体用户与操作类型并支持继承,因此工程上普遍的做法是共享层给足、细则全部交给 NTFS 管理。
基本信息
| 适用平台 | Windows Server 文件共享;Samba 环境对应 share 定义与文件系统 ACL |
|---|---|
| 共享权限档位 | 读取、更改、完全控制(针对账号或组) |
| NTFS 权限 | 完全控制、修改、读取与执行、列出文件夹内容、读取、写入等 |
| 有效权限 | 共享权限与 NTFS 权限取交集 |
| 常用命令 | icacls、Grant-SmbShareAccess、Get-SmbShareAccess、net share |
判定示例
| 共享权限 | NTFS 权限 | 实际结果 |
|---|---|---|
| 更改 | 修改 | 可读写,符合预期 |
| 读取 | 修改 | 只能读,共享层把它卡住 |
| 更改 | 读取 | 只能读,NTFS 更严 |
| 完全控制 | 拒绝写入(显式拒绝) | 不可写,显式拒绝优先 |
| 未授权账号 | 任何 | 连接阶段就被拒,不会进入文件判定 |
查看与调整
查看与调整
# Windows:查看共享层授权
Get-SmbShareAccess -Name data
# Windows:查看 NTFS 层权限(含继承来源)
icacls D:\data
# Windows:把共享层放宽到更改,细则交给 NTFS
Grant-SmbShareAccess -Name data -AccountName 'EXAMPLE\Domain Users' -AccessRight Change -Force
# Linux/Samba:挂载后核对服务端 ACL 是否按预期生效
getfacl -R -p /srv/smb/data | head -n 40典型使用场景
- 新建部门共享:共享层按组给「更改」,目录级用 NTFS 区分只读与可写子目录
- 排查「有权却进不去」:分别核对两级权限,定位是哪一级拒绝的
- 共享目录迁移后权限异常:核对随文件移动的继承标志与显式拒绝条目
- 为临时访客开权限:只加 NTFS 条目而不动共享层,便于到期回收
权限变更不总是立即生效:客户端可能保留已有会话或离线缓存,用户重新登录或断开重连后才看到新权限。排查时先用一个新的会话验证,避免把缓存当成策略未生效。
显式拒绝条目在 NTFS 中优先于允许。迁移或批量授权时误加一条拒绝,会让目标用户在所有上层权限都正确的情况下依然被拒,且从上层权限视图完全看不出原因,必须逐目录检查拒绝项。