为什么我无法在 %ProgramFiles% 上设置 NTFS 权限?

为什么我无法在 %ProgramFiles% 上设置 NTFS 权限?

使用 Windows Server 2019 上的管理员用户帐户,我尝试更改 、 和 上的用户帐户的 NTFS 权限%ProgramFiles%%ProgramFiles(x86)%但由于文件夹归 所有,%WinDir%因此出现错误。access deniedTrustedInstaller

  • 我已经尝试了基本和高级权限对话框,如果我使用高级对话框来更改权限C:,则在将更改传播到子项时,这三个文件夹会失败
  • 我认为可以更改文件夹的所有权,但我也认为这样做不是一个好主意

为什么会发生这种情况?有没有办法避免?

  • 我想要实现的是将用户帐户沙盒化,拒绝所有应用程序的执行权限,除了两个用于单一自动化目的的应用程序 - 其中一个位于的子文件夹中%ProgramFiles%,另一个位于单独的驱动器上。

答案1

这是因为文件夹的当前的ACL 不授予管理员帐户设置 ACL 的权限。如果您不是所有者,则您无法更改 ACL,除非明确授予此类访问权限 - 管理员也是如此。

(授予完全控制权的访问条目标记(IO)为“仅继承”;它仅对子对象有效,而不对原始文件夹有效。)

绕过该问题的一种方法是激活 SeRestorePrivilege(例如使用 PSPrivilege cmdlet)——这是 Explorer 用来设置任意所有者的方法——但它不起作用,icacls因为它在进行更改之前会再次手动禁用特权。不过它可能仍然适用于其他工具(可能是 PowerShell 自己的Set-Acl)。

另一种方法是使用类似的工具gsudo --ti,让您以 TrustedInstaller 权限运行任意命令(与 Windows 组件获取这些权限的方式非常相似)。

相关内容