如何移除NTFS的Everyone权限并添加Authenticated Users权限
问题解答
核心原因
你当前的方案仅修改了SMB共享层面的访问权限,该权限只控制用户通过网络访问共享入口的准入规则,与共享对应磁盘路径的NTFS文件系统权限完全独立,因此权限修改不会传递到子文件夹。直接操作NTFS ACL完全可以实现你的需求。
前置注意事项
- 运行脚本的账号需要拥有目标服务器对应文件夹的更改权限或所有权,推荐使用目标服务器本地管理员或域管理员账号执行
- 批量操作前务必先备份原有ACL,避免误操作导致业务访问故障,可通过
Get-Acl 目标路径 | Export-Clixml 备份文件路径实现备份 - 若目标路径下存在关闭了权限继承的文件夹,需要单独处理这类文件夹的权限,否则继承规则不会自动生效
修正后脚本示例
$Server = "USATRAMEHK040.atrame.deloitte.com" $ExportPath = "C:\ACL_Operation_Log" # 自行修改为你的日志存放路径 if (-not (Test-Path $ExportPath)) { New-Item -Path $ExportPath -ItemType Directory | Out-Null } # 获取非系统默认共享 $Shares = Get-WmiObject -ComputerName $Server -Class win32_share -Filter "Description != 'Remote Admin' and Description != 'Default share' and Description != 'Remote IPC' and Description != 'Printer Drivers'" | Select-Object -ExpandProperty Name foreach ($Share in $Shares) { $FolderPath = "\\$Server\$share" try { # ========== 1. 原有SMB共享权限修改逻辑保留 ========== Revoke-SmbShareAccess -name $Share -CimSession $Server -AccountName Everyone -Force Grant-SmbShareAccess -name $Share -CimSession $Server -AccountName "Authenticated Users" -AccessRight Full -Force # ========== 2. 新增NTFS ACL修改逻辑 ========== $acl = Get-Acl -Path $FolderPath -ErrorAction Stop # 移除所有Everyone的NTFS权限 $everyoneRules = $acl.Access | Where-Object { $_.IdentityReference.Value -like "*Everyone" } foreach ($rule in $everyoneRules) { $acl.RemoveAccessRule($rule) | Out-Null } # 构造Authenticated Users的权限规则,应用到当前文件夹、子文件夹、所有文件 $authUserRule = New-Object System.Security.AccessControl.FileSystemAccessRule( "Authenticated Users", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow" ) $acl.AddAccessRule($authUserRule) # 写回修改后的ACL Set-Acl -Path $FolderPath -AclObject $acl -ErrorAction Stop Write-Host "共享 $Share 权限修改完成" } catch { $errorMsg = "共享 $Share 处理失败:$($_.Exception.Message)" $errorMsg | Out-File "$ExportPath\AccessError.txt" -Append Write-Warning $errorMsg } }
关键改动说明
- 保留了原有SMB共享权限修改逻辑,确保网络访问共享入口的权限符合要求,最终有效权限为SMB共享权限与NTFS权限的交集
- 新增NTFS ACL修改逻辑,构造权限规则时指定了继承标志,权限会自动向下传递到所有子文件夹和文件,无需遍历所有子项
- 新增统一异常捕获和日志记录,避免执行过程中错误信息丢失
内容的提问来源于stack exchange,提问作者nikon D3400
相关产品推荐
相关产品推荐

