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