有人能解释一下这两个帐户是做什么用的吗?
我知道应用程序池帐户控制适用于网站的.NET 代码的权限。
如果该帐户对目录没有写权限,那么您就无法创建文件。
但是还有一个帐户 IISUSR,它是用于匿名身份验证的帐户。
这个帐户与.NET 代码和网站访问有何关系?
为什么我们需要 2 个账户?
答案1
IIS_Anonymous 帐户是用户访问网站时使用的帐户。因此,您需要确保此用户无法访问 Web 根目录之外的任何文件以及包含敏感信息(例如 sql 连接字符串等)的文件。您通常不希望允许此用户在任何地方具有写访问权限。
应用程序池帐户是您的应用程序(或 IIS 服务器)在其下运行的帐户。您需要为该帐户提供运行脚本所需的最低限度的访问权限。如果您有安全意识,您将为每个站点创建不同的应用程序池,这样一来,一个站点上的安全配置错误就不会影响到另一个站点。
答案2
Serverfault 上有一个类似的问题:
我写:
大多数人很难理解 IIS 的匿名用户(IUSR_...)和用于执行二进制文件的帐户(应用程序池帐户)之间的区别。
这IUSR 帐户用于用户未在服务器上进行身份验证的情况,对于“普通”网站而言,这是默认用例。对于内部网站,您可以禁用对 IIS 服务器的匿名访问,并让用户(自动)提交其网络/域凭据。
匿名帐户对文件和文件夹的权限决定了普通 Web 用户可以访问该服务器上的哪些资源(文件)。通常所有(静态)文件都是只读的,并且不允许列出文件夹内容。
这应用程序池标识(例如网络服务帐户)有所不同。它是执行脚本或程序集的帐户,即进程标识。例如,如果您的应用程序要写入某个文件夹(例如 C:\temp),则该帐户必须具有修改该文件夹中文件的文件系统权限。