如何将权限从引用文件传播到Windows中的目录中的所有文件?

时间:2016-03-01 12:24:43

标签: windows powershell file-permissions acl

我尝试使用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>
A screenshot of the permissions in wwwroot that I'd like propagated A screenshot of the permissions of a sample file in after using Set-Acl 所以我的问题是,我做错了什么?如何获得这些更详细的权限以完全传播? (我也尝试过检查并应用Replace all existing inheritable permissions on all descendants with inheritable permissions from this object,但它似乎也没有帮助。)

1 个答案:

答案 0 :(得分:0)

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

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

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

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