我尝试使用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
,但它似乎也没有帮助。)
答案 0 :(得分:0)
您确定要为要复制的权限指定原始文件或目录(而不是继承者)吗?
如果您指定(在$newAcl
)您所需权限的继承者,那么 Set-Acl
将仅传播文件本身最初的权限(即,没有被继承) ),您将看不到您正在设置其权限的文件的继承权限。
要获取继承的权限,您可以使用Helge Klein's SetACL
或者您可以在Get-Acl
作业中指定祖先(更高的)目录或文件。
因此,如果C:\inetpub\wwwroot\
继承了C:\inetpub\
的大部分权限,那么您需要在您提供的代码段PowerShell命令中使用$newAcl = Get-Acl C:\inetpub\
。