【问题标题】:Grant IUSR Rights to Use PowerShell Stop-Process Command?授予 IUSR 使用 PowerShell 停止进程命令的权利?
【发布时间】:2016-02-12 20:30:03
【问题描述】:
我有一个 PHP 脚本,它通过 shell_exec() 运行 Powershell Stop-Process 命令。 PHP 作为 IUSR 运行。当我运行脚本时,我收到拒绝访问错误消息。如果我使用我的管理员帐户在 PowerShell 中运行该命令,它会按预期工作。
如何授予 IUSR 在 Powershell 中执行 Stop-Process 的能力?
【问题讨论】:
标签:
windows
powershell
windows-server-2012
windows-server
【解决方案1】:
我看到一些信息表明,如果您将受限用户添加到 Performance Monitor Users 组并授予其调试权限,它将能够终止进程。
您可能会考虑一些风险较小的事情,例如以具有这些权限的用户身份运行另一个 Web 应用程序,该权限只能从本地计算机访问。然后让您的 PHP 应用程序向内部应用程序发出 Web 请求以完成它。
如果您试图只杀死一个特定的进程,这可以让您进一步限制影响,因为内部应用程序可能被设计为只杀死一个进程。
实现类似分离的其他方法是,例如有一个计划任务,它在特定目录中查找具有特定内容的文件,当它看到它时,它会杀死一个进程并删除该文件。 IUSR 可以被授予在该目录中创建文件的权限,以作为触发此操作的一种方式。这种方法很容易实现,但不是同步的。
【解决方案2】:
我无法找到解决方案来授予 IUSR 执行 Stop-Process 的特定权限,但我能够通过将与终止脚本关联的“匿名身份验证”用户从 IUSR 更改为来解决这个问题Administrator。
在 IIS 8.5 中,转到站点->我的站点->文件夹名称。在主面板上,单击 IIS 下的 Authentication。右键单击匿名身份验证,然后单击编辑。
您可以在 IIS 应用程序的任何级别设置“匿名身份验证”值;从站点级别到子目录级别。我建议仅在实际托管您的终止脚本的目录上将值从 IUSR 更改为 Administrator。为整个站点更改它可能会给应用程序的其他部分带来问题。