如何将参考文件的权限传播到 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\
。
我正在尝试使用 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\
。