我正在 IIS 6.0 中设置一个网站,但对帐户和权限感到困惑。我专门为该网站设置了一个应用程序池,并指定了一个特定用户。身份验证方法属性表中的 IUSR_XXX 帐户为匿名用户。
根据这个问题:在 IIS 7.0 中,应用程序池标识和网站标识有什么区别?
..应用程序池帐户应该用于文件访问。但我没有看到这种行为。如果我只授予网站用户帐户对文件系统的权限,我会收到拒绝访问错误。但如果我授予 IUSR_XXX 对文件的读取权限,它们就会显示出来。
那么这是怎么回事?在这个问题中,我的 IIS 6 和 IIS 7 之间的行为是否不同?我应该忽略应用程序池并仅更改匿名用户吗?对于需要访问数据库并写入文件系统中某些文件夹的站点,建议的设置是什么?
任何帮助都将非常感谢,谢谢!
答案1
IUSR 和网络服务帐户均由 IIS 使用。以下是我的建议...
- 对于所有人都可以访问的公共网站:
IUSR 和网络服务需要对网站的所有应用程序文件(.aspx 页面等)和 dll 具有读取权限。IUSR 需要对网站正在写入文件的任何文件夹具有写入权限(这在公共网站上可能很危险)。数据库将由数据库连接部分中 web.config 中指定的 SQL 或网络帐户访问。
- 对于具有表单身份验证的网站(使用用户名和密码通过登录页面登录):
同上。现在,对任何文件夹的写访问权限都得到了更好的保护,因为使用该网站的人已经通过了您的应用程序的身份验证。
- 对于使用集成身份验证的网站:
经过身份验证的用户的用户凭据需要对网站的所有应用程序文件(.aspx 页面等)和 dll 具有读取权限。经过身份验证的用户的用户凭据需要对网站正在写入文件的任何文件夹具有写入权限。数据库将由数据库连接部分中 web.config 中指定的 SQL 或网络帐户或经过身份验证的用户的用户凭据访问。
更新 网络服务帐户(或您用于应用程序池的任何帐户)和 IUSR 协同工作。我并不总是 100% 清楚哪个帐户控制对哪些资源的访问,但我从经验中知道您需要同时拥有这两个帐户。IUSR 用于访问 .aspx 页面、图像文件、静态内容等。网络服务帐户访问 IIS 元数据库、您的应用程序 dll、.Net 框架文件等。希望这能有所帮助。
答案2
据我所知,这种行为在 IIS6 和 IIS7 之间发生了变化。在 II6 中,您似乎无法将应用程序池帐户直接设置为匿名用户帐户,至少不能像在 II7 中那样。我喜欢在 IIS7 中使用应用程序池帐户进行匿名访问,但这在 IIS6 中不起作用,所以我需要在那里进行不同的设置。
Apart from the account changes, IIS 7.x also enables designating the Application pool identity as the anonymous user account. This main advantage of using the application pool identity as the anonymous user is that you do not have to manage security for another user account.