0aa8fe6
这次没有正文改动。
这是 windows/共享文件夹权限(共享 + NTFS).md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
be5956e
@@ -0,0 +1,69 @@ +--- +tags: [共享, 权限, NTFS, SMB] +order: 100 +--- + +# 共享文件夹权限(共享 + 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,普通复制会丢权限。