我有一个PHP脚本,通过Stop-Process
运行Powershell shell_exec()
命令。 PHP作为IUSR运行。当我运行脚本时,我收到一个拒绝访问错误消息。如果我使用管理员帐户在PowerShell中运行该命令,它将按预期工作。
如何授予IUSR在Powershell中执行Stop-Process
的能力?
答案 0 :(得分:1)
我无法找到解决方案来授予IUSR执行Stop-Process
的特定权限,但我能够通过从{{更改与kill脚本相关联的“匿名身份验证”用户来解决这个问题。 1}}到IUSR
。
在IIS 8.5中,转到站点 - >我的站点 - >文件夹名称。在主面板上,单击 IIS 下的身份验证。右键单击匿名身份验证,然后单击编辑。
您可以在IIS应用的任何级别设置“匿名身份验证”值;从站点级别到子目录级别。我建议仅在实际托管kill脚本的目录中将值从Administrator
更改为IUSR
。为整个站点更改它可能会给应用程序的其他部分带来问题。
答案 1 :(得分:0)
我看到一些信息表明,如果您将有限的用户添加到Performance Monitor Users
组并授予其调试权限,它将能够终止进程。
您可能会考虑一些风险稍低的东西,比如以具有这些权限的用户身份运行另一个Web应用程序,只能从本地计算机访问。然后让你的PHP应用程序向内部应用程序发出web请求以执行它的killin'。
如果你只想杀死一个特定的进程,这可以让你进一步限制影响,因为内部应用程序可能被设计为只杀死那一件事。
实现类似分离的其他方法是,例如,在特定目录中查找具有特定内容的文件的计划任务,当它看到它时,它会终止进程并删除该文件。可以授予IUSR
在该目录中创建文件的权限,作为触发此操作的方法。这种方法很容易实现,但不是同步的。