首页 > 解决方案 > 如何在 Powershell 脚本中授予目录权限

问题描述

我在 IIS 管理器中的站点上单击鼠标右键,然后选择“编辑权限”,然后单击安全选项卡。在那里,我拥有具有以下权限的用户 IUSR:读取和执行、列出文件夹内容、读取。我还可以使用命令在 Powershell 中验证这一点,该命令Get-Acl <path> |fl显示:

访问:NT AUTHORITY\IUSR 允许 ReadAndExecute、同步

现在我完全删除了 IUSR 的 ACL 条目。我想用 Powershell 脚本设置它,使用以下几行:


$path=<path to directory>
$acl = Get-Acl "$path"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("NT AUTHORITY\IUSR","ReadAndExecute","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl "$path"

再次验证Get-Acl <path> |fl,我显示了与预期完全相同的信息。但是在 IIS 管理器中,没有设置之前检查的权限。而是选中“特殊权限”。当我单击“高级”并从列表中选择 IUSR 时,它显示已授予相同的权限:读取和执行、列出文件夹内容、读取

但是我的网站不工作(浏览器抛出错误:HTTP-Error 401.3 - Unauthorized)。仅当我在权限窗口中手动授予这些权限时,它才有效。如何在 Powershell 脚本中正确设置所需的权限?

标签: powershell

解决方案


将我的评论变成答案,听起来您还需要为访问规则指定 继承和传播标志,以便文件夹的子对象继承权限。

$AccessRule = [System.Security.AccessControl.FileSystemAccessRule]::new("NT AUTHORITY\IUSR", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")

推荐阅读