犯罪地点是 WinSrv2008 和 IIS7。
我的 IIS 应用程序池用户正在尝试创建一个文件夹但失败了。我如何找出它是哪个用户?
假设我不太了解 IIS7 和 Aspnet,但需要通过工具追踪正在发生的一切。
所以我开火Sysinternals/ProcessMonitor找出发生了什么。
我发现文件夹的访问被拒绝,正如我所怀疑的那样。但哪个用户?我将用户列添加到输出或 ProcessMonitor 中,它显示IIS 应用程序池\默认应用程序池大写。嗯...这不是用户是吗?如果我进入 IIS 及其应用程序池和高级设置、进程模型和身份,我可以看到有关哪个用户的线索,但那只是因为我了解 IIS。如果是 Apache 或 LightHttpd 或其他什么呢?我如何查看要授予用户适当权限?
答案1
实际上,IIS AppPool\DefaultAppPool 是一个用户,您可以向父文件夹添加“修改”权限,以允许它创建子文件夹等 - 请阅读http://www.iis.net/learn/manage/configuring-security/application-pool-identities了解更多信息。
答案2
默认情况下,IIS 7+ 使用IUSR
用户帐户和IIS_IUSRS
组帐户来获取权限。您需要 A) 使用命名帐户或 B) 向IUSR
用户或IIS_IUSRS
组授予权限。微软的 IIS 站点对内置帐户有出色的介绍。
选项 A 可能是最佳方法。您可以进入 IIS 管理器,选择应用程序池,然后右键单击要修改的应用程序池并选择“高级设置”
进入高级设置后,在“进程模型”区域下有一个名为“身份”的选项。然后单击此条目旁边的框,然后单击显示的省略号。出现的菜单将允许您为应用程序池设置自定义帐户
答案3
答案4
您已经使用了正确的工具(ProcessMonitor),只是帐户名称看起来有点奇怪。
'IIS Apppool\DefaultAppPool' 确实是一个有效的 Windows 用户帐户,尽管它很特殊。它没有密码,您无法使用它登录。它甚至没有列在任何用于列出用户帐户的内置工具中。
但是您可以为其分配权限,只需在 GUI 或“icacls.exe”中键入全名即可。由于您没有在任何地方看到它,因此我通常会将这些用户类型添加到一个组中,然后为该组分配权限。
net localgroup groupName "IIS AppPool\Defaultapppool" /ADD
每个将其身份属性设置为“ApplicationPoolIdentity”(IIS8 中的默认设置)的 IIS 应用程序池都有一个这样的特殊帐户。
拥有这些帐户的主要原因是能够在 AppPool 上设置权限,而不必管理许多用户帐户,而不是对所有 appPool 使用相同的用户帐户。
与“IIS AppPool*”类似的是“NT SERVICE*”,它们是运行 Windows 服务的用户帐户,无需管理它们,但您仍然可以为这些用户分配权限。