服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
遇到的问题及解决办法:
最近在IIS7上配置PHP,但总是提示500错误,以往是因为.net framework版本弄错,但这次不是,找到这篇文章《iis7.0 发生未知 FastCGI错误,错误代码 0x8007010b 的解决办法》
错误提示
修改该网站所对应的应用程序池
进程模型 -> 标识 修改为:LocalSystem
- 这里是简单粗暴的解决办法,即把权限交给最高标识
LocalSystem
; - 但如果你希望标识维持 ·ApplicationPoolIdentity· ,那么可以参考下面知识点第一条中的
4.ApplicationPoolIdentity(应用程序池标识)
,找到相关目录配置一个应用程序池对应的账号,再对该账号授权。
知识点
参考本文《Local System/Network Service/Local Service权限详解》
* 标识说明
1.Local System(本地系统)
该账户具有相当高的权限。
首先,该账户也隶属于本地Administrators 用户组,因此所有本地Administrators用户能够进行的操作该账户也能够进行。
其次,该账户还能够控制文件的权限(NTFS 文件系统)和注册表权限,甚至占据所有者权限来取得访问资格。如果机器处于域中,那么运行于Local System账户下的服务还可以使用机器账户在同一个森林中得到其他机器的自动认证。
最后一点就是运行于Local System下的进程能够使用空会话(null session)去访问网络资源。
而且,其他一些Windows 用户模式下的核心组件也运行于该账户下,例如system32/Smss.exe 等。
需要注意的是,运行于此账户下的进程使用的是HKEY_USERS/.Default 账户配置,因此它不能够访问其他账户的配置。
举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdate Client、Clipbook、Com+、DHCP Client、Messenger Service、Task Scheduler、Server Service、Workstation Service,还有Windows Installer。
2.Local Service(本地服务)
Local Service账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。
运行于此账户下的进程和运行于Network Service账户下的进程的区别在于运行于Local Service账户下的进程只能访问允许匿名访问的网络资源。运行于Local Service下的账户使用的配置文件是HKU/S-1-5-19和Documents and Settings/LocalService。
举例来说,以Local Service账户运行的服务主要有:Alerter、Remote Registry、Smart Card、SSDP,还有WebClient。
3.Network Service(网路服务)
该账户也是为了使用机器账户在网络上的其他计算机上认证而设定的。但是他没有Local System那么多的权限。它能够以计算机的名义访问网络资源。以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。
运行于此账户下的进程使用网络账户配置文件HKEY_USERS/S-1-5-20和Documents and Settings/NetworkService。
举例来说,以Network Service账户运行的服务主要有:Distributed Transaction Coordinator、DNS Client、Performance Logs and Alerts,还有RPC Locator。
4.ApplicationPoolIdentity(应用程序池标识)
参考:《IIS7.5中神秘的ApplicationPoolIdentity》
ApplicationPoolIdentity – 默认情况下,选择“应用程序池标识”帐户。启动应用程序池时动态创建“应用程序池标识”帐户,因此,此帐户对于您的应用程序来说是最安全的。
也就是说"ApplicationPoolIdentity"帐号是系统动态创建的“虚拟”帐号(说它是虚拟的,是因为在用户管理里看不到该用户或用户组,在命令行下输入net user也无法显示,但该帐号又是确实存在的)
IIS7.5的虚拟帐号设计确实很棒,想想传统IIS6的时候,为了把同一服务器上的各站点权限分开(以防止木马捣乱),不得不创建一堆iuser_XXX,iwam_XXX帐号并指定密码,再一个个站点分配过去,累死人!而虚拟帐号设计则让这类管理轻松多了,也不用担心密码过于简单或过期问题。
* IIS 和内置帐户
以下是 IIS 使用的内置帐户、IIS 特定的帐户及其关联的用户权限的列表。
名称 | 内容 |
---|---|
本地系统 | 内置帐户,该帐户具有较高的访问权限级别。如果工作进程标识作为“本地系统”帐户运行,则该工作进程具有整个系统的完全访问权限。 |
网络服务 | 内置帐户,该帐户的系统访问权限比“本地系统”帐户少,但仍能通过网络与计算机帐户的凭据进行交互。对于 IIS 6.0,建议以“网络服务”帐户的身份运行为应用程序池定义的工作进程标识。默认情况下,该工作进程标识以“网络服务”帐户的身份运行。 默认用户权限: - 替换进程级令牌 (SeAssignPrimaryTokenPrivilege) - 调整进程的内存配额 (SeIncreaseQuotaPrivilege) - 生成安全审核 (SeAuditPrivilege) - 忽略遍历检查 (SeChangeNotifyPrivilege) - 从网络访问此计算机 (SeNetworkLogonRight) - 作为批处理作业登录 (SeBatchLogonRight) - 作为服务登录 (SeInteractiveLogonRight) - 允许本地登录 (SeInteractiveLogonRight) |
本地服务 | 内置帐户,该帐户的计算机访问权限比“网络服务”帐户少,并且该帐户的用户权限仅限于本地计算机。如果工作进程不需要访问所在服务器之外的地方,则可以使用“本地服务”帐户。 默认用户权限: - 替换进程级令牌 (SeAssignPrimaryTokenPrivilege) - 调整进程的内存配额 (SeIncreaseQuotaPrivilege) - 生成安全审核 (SeAuditPrivilege) - 忽略遍历检查 (SeChangeNotifyPrivilege) - 从网络访问此计算机 (SeNetworkLogonRight) - 作为批处理作业登录 (SeBatchLogonRight) |
IIS_WPG | IIS 组帐户,只给该帐户指派了在 Web 服务器上启动和运行工作进程所需的最低权限和用户权限。 默认用户权限: - 忽略遍历检查 (SeChangeNotifyPrivilege) - 作为批处理作业登录 (SeBatchLogonRight) - 从网络访问此计算机 (SeNetworkLogonRight) |
IUSR_computername | 具有 IIS 匿名访问权限的 IIS 帐户。默认情况下,当用户访问一个设置为匿名验证的网站时,就会将该用户映射到 IUSR_comptername 帐户。用户具有与该帐户完全相同的用户权限。 默认用户权限: - 从网络访问此计算机 (SeNetworkLogonRight) - 忽略遍历检查 (SeChangeNotifyPrivilege) - 作为批处理作业登录 (SeBatchLogonRight) - 允许本地登录 (SeInteractiveLogonRight) |
IWAM_computername | 可在 IIS 5.0 隔离模式下启动进程外应用程序的 IIS 帐户。 默认用户权限: - 替换进程级令牌 (SeAssignPrimaryTokenPrivilege) - 调整进程的内存配额 (SeIncreaseQuotaPrivilege) - 忽略遍历检查 (SeChangeNotifyPrivilege) - 从网络访问此计算机 (SeNetworkLogonRight) - 作为批处理作业登录 (SeBatchLogonRight) |
ASPNET | 用于在 IIS 5.0 隔离模式下运行 Microsoft ASP.NET 工作进程的内置帐户。 默认用户权限: - 从网络访问此计算机 (SeNetworkLogonRight) - 作为批处理作业登录 (SeBatchLogonRight) - 作为服务登录 (SeInteractiveLogonRight) - 拒绝本地登录 (SeDenyInteractiveLogonRight) - 拒绝通过终端服务登录 (SeDenyRemoteInteractiveLogonRight) |