Windows 2008执行PowerShell设置审核规则遇Set-Acl未授权错误
解决Windows 2008服务器上PowerShell设置审核规则的未授权错误
嘿,我来帮你搞定这个权限问题!你遇到的Set-Acl : Attempted to perform an unauthorized operation while using Addaudit Rule错误,核心原因是C:\Windows\security属于系统核心敏感文件夹,默认权限限制极严,再加上Windows 2008的UAC(用户账户控制)管控,普通管理员权限根本没法直接修改它的审核规则。结合你的脚本和问题,给你几个关键解决步骤:
1. 必须以管理员身份运行PowerShell
Windows 2008的UAC默认会限制管理员的权限范围,哪怕你是管理员组成员,普通启动的PowerShell也没有足够权限修改系统文件夹的安全设置。右键点击PowerShell图标,选择「以管理员身份运行」,这是操作的基础前提。
2. 先获取文件夹的所有权
C:\Windows\security的默认所有者是NT SERVICE\TrustedInstaller,你需要先把所有权转移到管理员组,才能修改它的审核规则。可以在脚本开头添加这段代码:
$FileDirList = "C:\Windows\security" # 获取当前ACL并修改所有者为Administrators组 $acl = Get-Acl $FileDirList $newOwner = New-Object System.Security.Principal.NTAccount("Administrators") $acl.SetOwner($newOwner) Set-Acl $FileDirList $acl
⚠️ 注意:修改系统文件夹的所有权要谨慎,完成操作后如果需要,记得把所有者改回原来的NT SERVICE\TrustedInstaller。
3. 补全并调整你的审核规则脚本
你的脚本内容不完整,我帮你补全完整流程,同时根据常见需求调整了继承规则参数(你可以根据实际需求修改):
$FileDirList = "C:\Windows\security" $AccountName = New-Object System.Security.Principal.NTAccount("Everyone") $FileSystemRight = [System.Security.AccessControl.FileSystemRights]::FullControl $AuditFlag = [System.Security.AccessControl.AuditFlags]::Failure # 如果需要审核规则应用到子文件夹和文件,用下面的继承设置;仅需当前文件夹则保持InheritanceFlags::None $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None # 创建审核规则并应用 $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule( $AccountName, $FileSystemRight, $InheritanceFlag, $PropagationFlag, $AuditFlag ) $acl = Get-Acl $FileDirList $acl.AddAuditRule($auditRule) Set-Acl $FileDirList $acl
4. 提前启用文件系统的审核策略
Windows 2008默认可能没有启用文件系统的失败审核策略,即便你设置了文件夹的审核规则也不会生效。需要先运行这个命令(同样要管理员权限):
auditpol /set /subcategory:"File System" /failure:enable
把这些步骤结合起来,先启用审核策略,再执行修改所有权+设置审核规则的脚本,应该就能解决未授权的问题了。
内容的提问来源于stack exchange,提问作者Aj Kumar




