IIS7 网站应用程序的文件夹权限

103

我在公司的Intranet网站上使用不带模拟的Windows身份验证,并且使用IIS7。

在IIS7下,使用这些设置访问包含我的Web应用程序的文件夹所使用的帐户是什么?

它会是IIS_IUSRS吗?还是NETWORK SERVICE?或者是其他我不知道的帐户?


可能是重复的问题:IIS AppPoolIdentity 和文件系统写入访问权限 - KyleMit
7个回答

149
在IIS 7(不是IIS 7.5)中,网站访问文件和文件夹取决于为该网站设置的应用程序池的帐户。默认情况下,在IIS7中,此帐户为NETWORK SERVICE为应用程序池指定标识符(IIS 7) 在IIS 7.5(Windows 2008 R2和Windows 7)中,应用程序池在启动应用程序池时创建的ApplicationPoolIdentity下运行。如果要为此帐户设置ACL,请选择IIS AppPool\<yourpoolname>而不是NT Authority\Network Service

39
请注意,它并不是字面上的 IIS AppPool\ApplicationPoolName,而是 IIS AppPool\<yourpoolname> - Jeff S
22
在IIS 7.5中,应用程序池的默认身份标识是ApplicationPoolIdentity。 ApplicationPoolIdentity代表一个名为“IIS APPPOOL\AppPoolName”的Windows用户账户,在创建应用程序池时创建,其中AppPoolName是应用程序池的名称。 "IIS APPPOOL\[AppPoolName]"用户默认是IIS_IUSRS组的成员。 因此,您需要授予IIS_IUSRS组写入访问权限。 - Be.St.
使用更高版本的Windows操作系统的用户,如果遇到类似问题,可以参考以下文章配置“AppPool\DefaultAppPool”账户:http://www.iis.net/learn/manage/configuring-security/application-pool-identities。这也有助于避免在从Windows 8升级到8.1后出现的错误,其中显示:“加载配置文件时发生错误:无法启动对[完整文件路径]的更改监视,因为拒绝访问。” - Matty J
1
我已经给了应用程序池完全权限,但仍然无法访问。 - Yousi

30

http://forums.iis.net/t/1187650.aspx 这个链接提供了答案。将IIS认证设置为应用程序池身份即可解决此问题。

在IIS认证中,匿名身份验证被设置为“指定用户”。当我将其更改为应用程序池时,就可以访问该站点了。

要进行设置,请在IIS中单击您的网站,然后双击“认证”。右键单击“匿名身份验证”,然后单击“编辑…”选项。从“指定用户”切换到“应用程序池身份”。现在,您应该能够使用IIS AppPool\{Your App Pool Name}来设置文件和文件夹权限。


3
非常有帮助。如果你不将匿名身份验证从“特定用户”更改为“应用程序池标识”,那么当设置IIS AppPool\ {您的应用程序池名称}权限时,您的权限更改将不会反映出来。 - David
哦,我的天啊。似乎没有人注意到这个。这刚刚解决了数小时的挖掘工作。 - Joe Swindell
+1教我如何钓鱼。找出IIS使用的用户比说明特定版本的IIS中当前用户更有价值。 - Remi Despres-Smyth

30
如果对任何人有所帮助,可以授权给"IIS_IUSRS"组。
请注意,如果找不到"IIS_IUSRS",请尝试在它前面加上您的服务器名称,如"MySexyServer\IIS_IUSRS"。

这对我有用。我漏掉了服务器名称,而且还没有看到任何人提到过。 - drichardson
你可以始终使用本地符号“.\IIS_IUSRS”。 - Bernhard
酷炫的服务器名称 - ahmed mani

21

在运行IIS 7.5时,我成功地为本地计算机用户 IUSR 添加了权限。但应用程序池用户不起作用。


7

以下方法对我有效,简单明了:

  1. 打开IIS管理器(运行inetmgr)
  2. 进入“应用程序池”->“高级设置”
  3. 将“应用程序池身份”设置为NetworkService
  4. 右键点击文件,选择属性,进入安全选项卡,点击编辑,在框中输入 Network Service(带空格),然后点击“检查名称”,最后授予完全控制权限(或所需的其他权限)

搞定了!谢谢。 - Yazan Khalaileh

1
  1. 在 IIS 7.5 和 Windows 7 上,我无法授予 APPPOOL/Mypool 权限。
  2. IUSR 和 IIS_IUSRS 权限对我无效。
  3. 我遇到了这个问题:

    -使用 C# 创建控制台应用程序
    -此应用程序使用 createeventsource,如下所示

    if(!System.Diagnostics.EventLog.SourceExists(sourceName)) System.Diagnostics.EventLog.CreateEventSource(sourceName,logName);

    -构建解决方案并获取 .exe 文件

    -以管理员身份运行 exe。这将创建日志文件。

注意:记得刷新事件查看器才能看到日志。

我希望这个解决方案能帮助某些人 :)


1

使用IIS为Web主机应用程序设置读/写权限,按照以下步骤进行:

1)检查站点的应用程序池

enter image description here

2)转到应用程序池并检查站点的标识。

enter image description here

3)浏览站点并转到主文件夹,右键单击该文件夹。

enter image description here

4)转到安全性选项卡,单击编辑按钮,然后单击用户标识,在下面可以看到您想要为经过身份验证的用户提供权限的多个复选框选项,选择复选框后单击保存。

enter image description here


1
“2)”的图像应显示与条目“1)”中引用的应用程序池名称相对应,当前它显示其他池,并应显示“Test”。 条目“4)”的图像应包括所需的用户/组。我不明白编辑“CREATOR OWNER”如何影响应用程序池或IUSR或IIS_IUSRS使用的访问权限。 - ChrisHiebert
我同意@ChrisHiebert的观点,看起来你可能错过了第五步截图...我们为什么要执行第一步或第二步呢? - Nate Anderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接