我想更改受保护文件的权限。
Using WMIC.EXE as an example, I want to change Administrators to F from R.
CACLS c:\windows\system32\wbem\wmic.exe
Returns:
NT SERVICE\TrustedInstaller:F
BUILTIN\Administrators:R
NT AUTHORITY\SYSTEM:R
BUILTIN\Users:R
CACLS c:\windows\system32\wbem\wmic.exe /P BUILTIN\Administrators:F
Returns: Access Denied
在由RunOnce注册表项调用的批处理文件中,此操作也会失败。
答案 0 :(得分:0)
takeown /f "c:\Windows\System32\wbem\WMIC.exe" /a
icacls "c:\windows\system32\wbem\wmic.exe" /grant administrators:F
这里的障碍可能并不明显。首先是缺少授予“管理员”组的权限。在此文件上,“管理员”仅具有读取和执行权限。因此,这需要改变。但是......当您无权更改时如何更改?
在Windows中,管理员可以始终拥有安全对象的所有权-例如文件或目录。同样,对象所有者可以始终修改对象的安全描述符-即使安全描述符显示他们无权访问。这些原则是关键。
因此,我们是管理员,因此我们可以获取文件的所有权,然后更改权限以授予自己(或任何其他人)访问权限。 cacls.exe
无法帮助我们完成第一部分,因此我们将转向takeown.exe
。 /f
arg的目标是文件,/a
的目标是“管理员”组,而不是单个运行命令的人。
takeown /f "c:\Windows\System32\wbem\WMIC.exe" /a
现在作为所有者,我们可以自由地在安全描述符(也称为授予权限)中向DACL添加/修改ACE。我们可以使用cacls.exe
或icacls.exe
,但我总是推荐后者,因为前者已贬值。但我会留给你。
icacls "c:\windows\system32\wbem\wmic.exe" /grant administrators:F
稍后,在您需要执行任何操作之后...如果要替换原始权限,我们必须将所有权返回到“ TrustedInstaller”,然后将管理员的“完全控制”权限更改回“ read + execute”组。 icacls.exe
可以完成两项工作:
icacls "c:\windows\system32\wbem\wmic.exe" /setowner "NT Service\TrustedInstaller"
icacls "c:\windows\system32\wbem\wmic.exe" /grant:r "administrators":(RX)