如何将参考文件的权限传播到 Windows 目录中的所有文件?

How to propagate permissions from reference file to all files in a directory in Windows?

我正在尝试使用 IIS 在本地提供网页服务,但我无法以编程方式为我的 wwwroot 目录中的所有文件设置权限。当我将 Set-Acl PowerShell 指令与具有必要权限的参考文件一起使用时,我只看到两个更改传播:更改了所有者,并添加了 IIS_USRS 组的 RW 权限。

PS C:\WINDOWS\system32> $newAcl = Get-Acl C:\inetpub\wwwroot\
PS C:\WINDOWS\system32> Get-ChildItem C:\inetpub\wwwroot\ -Recurse -Force | Set-Acl -AclObject $newAcl
PS C:\WINDOWS\system32>
所以我的问题是,我做错了什么?我怎样才能获得这些更详细的权限来完全传播? (我也试过检查和应用 Replace all existing inheritable permissions on all descendants with inheritable permissions from this object,但它似乎也没有帮助。)

您确定要为要复制的权限指定原始文件或目录(而不是继承者)吗?

如果您指定(在 $newAcl 中)您想要的权限的继承者,那么 Set-Acl 将只传播文件本身最初具有的权限(即,没有被继承) 并且您将看不到您正在设置其权限的文​​件的继承权限。

要获得继承的权限,您可以使用 Helge Klein's SetACL 或者您可以在 Get-Acl 作业中指定一个祖先的(更高层)目录或文件。

因此,如果 C:\inetpub\wwwroot\C:\inetpub\ 继承了大部分权限,那么您需要在您提供的 PowerShell 命令片段中使用 $newAcl = Get-Acl C:\inetpub\