IIS7.5最小权限分配

IIS执行PHP出现500错误原因(权限不足)但又不想给本地服务权限

IIS中应用程序池的运行账户(标识)有以下4个选项

  • LocalService 本地服务
  • LocalSystem 本地系统
  • NetWorkService 网络服务
  • ApplicationPoolIdentify

默认情况下新建的应用程序池标识为ApplicationPoolIdentify,官网文档解释(传送门)为:
大概的意思:在IIS7.5以后的版本中,新建的所有程序池默认运行标识为ApplicationPoolIdentity。启动该应用程序池时,会自动创建一个与应用程序池同名的虚拟账户来运行该进程。
说它是虚拟的,是因为在用户管理里看不到该用户或用户组,在命令行下输入net user也无法显示,但该帐号又是确实存在的。可以通过任务管理器观察到w3wp.exe这个web程序进程是以应用程序的名称作为用户名运行的。


解决方法

在文件夹安全,增加权限用户,手动输入:“IIS AppPoolDefaultAppPool”(即IIS AppPool应用程序池名),但是window2008会提示无法找到。

使用管理员身份命令

icacls c:\wwwroot /C /grant "IIS AppPool\DefaultAppPool":(CI)(OI)RW 

那么就给wwwroot目录增加了 一个读写权限的DefaultAppPool用户。这时候运行PHP就不会出现500错误。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据