iis 如何更改PHP运行时的Windows用户名?

fsi0uk1n  于 9个月前  发布在  PHP
关注(0)|答案(2)|浏览(71)

我通过IIS运行PHP,需要一个脚本到网络共享上的mkdir(),这意味着我需要PHP通过作为服务帐户运行来创建文件夹。这可能吗?

wj8zmpe1

wj8zmpe11#

一个更好的解决方案可能是运行一个服务,运行中的PHP示例可以与之通信,告诉服务为您创建目录。更改PHP运行时的用户名,将更改PHP在您的服务器/网络上执行操作的权限。我知道这是你的目标,因为你希望PHP能够做更多的事情,但这可能会导致更多的伤害。例如,一个恶意的人发现了一个安全漏洞,并设法让您的Web服务器在您的服务器上执行任意代码。如果PHP具有提升的权限,那么执行的代码可能会对您的系统造成额外的损害,而这是在更有限的权限下无法做到的。
您可以执行一个服务/计划任务来读取文件/数据库,等待写入这些目录名,然后创建目录或侦听127.0.0.1:xxxx的服务,其中xxxx是1024上的某个随机端口,并允许PHP直接与该服务通信以发送目录创建请求。我会确保服务/计划任务运行的帐户没有超过必要的权限,我不允许PHP提供命令,只有新的目录名称,您的服务/计划任务只能使用PHP提供的内容执行mkdir()。我也会清理目录名,这样就不会有人通过
所有这些可能比您希望的要复杂,但最小特权策略将使您不那么容易受到攻击。如果您不担心安全问题,那么可以尝试更改应用程序池标识,如Lex Li所建议的。

wtzytmuj

wtzytmuj2#

PHP可以通过作为服务帐户运行来创建文件夹。您可以在IIS中配置应用程序池,使其在具有访问网络共享和创建文件夹所需权限的服务帐户下运行:

  • 打开IIS管理器并选择PHP应用程序正在使用的应用程序池。
  • 点击右侧的“高级设置”。
  • 在Process Model下,可以将Identity属性设置为所需的服务帐户。
  • 确保服务帐户对网络共享具有创建文件夹所需的权限。

相关问题