共享文件夹权限(共享 + NTFS)
场景
新建一个部门共享盘,只有本部门能读写,其他人只读或者看不到。
前置条件
- 服务器上建好目录
- 域里已经有对应的安全组(推荐按组授权,不按人)
- 知道最终权限取共享权限和 NTFS 权限的交集
配置
# 目录
New-Item -ItemType Directory -Path D:\share\finance -Force
# 共享(共享权限给「所有人」完全控制,实际靠 NTFS 收口)
New-SmbShare -Name "finance" -Path D:\share\finance -FullAccess "Everyone"
# 或者更稳妥:共享权限只给 Domain Admins
Grant-SmbShareAccess -Name "finance" -AccountName "CORP\Domain Admins" -AccessRight Full -Force
# NTFS:部门组读写,管理员完全控制,其他不给
icacls D:\share\finance /inheritance:r
icacls D:\share\finance /grant "CORP\Domain Admins:(OI)(CI)F"
icacls D:\share\finance /grant "CORP\GRP-Finance:(OI)(CI)M"
icacls D:\share\finance /remove "CORP\Domain Users"
验证
Get-SmbShare -Name "finance"
Get-SmbShareAccess -Name "finance"
icacls D:\share\finance
用普通账号实际访问一次:
net use Z: \\fs01\finance /user:CORP\testuser
回滚
Remove-SmbShare -Name "finance" -Force
NTFS 权限用 icacls 恢复,或者从父目录重新继承:
icacls D:\share\finance /inheritance:e
坑
- 共享权限和 NTFS 取交集,两边都放行才通,常见错误是共享给了但 NTFS 没给。
Everyone包含匿名,能用 NYSD 就用,别图省事。- 权限按组授,组里加人就行,别一个个加用户。
- 用户登录后组变更要重新登录才生效,或者
klist purge。 - 打开「基于访问的枚举」后,没权限的文件夹直接不可见,比只读更干净。
- 迁移目录时
robocopy /COPYALL才能带上 ACL,普通复制会丢权限。