需要能够使用 IIS 从服务器读取/写入网络文件夹的文件。现在我最初没有设置它,所以我不知道为什么 - 但在应用程序池中创建了一个新用户来执行此操作,并授予了许多权限(甚至是管理员!)。
但是,是否可以使默认ApplicationPoolIdentity
能够通过网络读取/写入文件?
据我所知,服务器上创建了一个用户,user_to_read_write
并命名了它,现在它被用作应用程序池中进程模型下的自定义帐户的身份。
我如何才能更改当前设置,使网站仍然能够通过网络从某个文件夹读取/写入,但更安全?我觉得让管理员以 IIS 身份运行是一件非常糟糕的事情
我是否需要保留该帐户但删除其管理员权限(并且只保留其读/写权限 - 甚至对特定文件夹?),或者我需要完全删除它,并且有办法使其ApplicationPoolIdentity
能够读/写?
答案1
您的 IIS 服务器当前设置方式在某种程度上是正确的,即使用自定义帐户作为池标识,但权限过多。在您的程序正常运行之前,您不应该采取添加权限的简单方法,并且将它们分配给默认标识以便所有新池也具有这些权限是错误的。
你应该读一下微软的文章 应用程序池标识。
以下是一些引言:
应用程序池标识怎么样?
好消息是,应用程序池标识也使用机器帐户来访问网络资源。无需进行任何更改。
为了完成这项工作,您需要做的就是在共享的计算机上右键单击共享文件夹,选择属性>安全>编辑>添加>对象类型>计算机,然后输入您的应用程序所在的计算机名称。
帖子中有一个很好的答案 IIS AppPoolIdentity 和文件系统写访问权限 如果您希望避免使用默认身份和权限,那么总结了此类设置的正确方法。
以下引用该答案的一部分:
在共享环境中,您可能有数百个站点,每个站点都有自己的应用程序池和应用程序池标识,您可以将站点文件夹存储在已删除组
Users
并设置权限的文件夹或卷中,以便只有管理员和系统帐户才有访问权限(具有继承性)。
IIS AppPool\[name]
然后,您将单独分配每个站点根文件夹所需的必要权限。您还应确保删除您创建的任何用于存储潜在敏感文件或数据的文件夹
Users
。您还应确保安装的任何应用程序均未在其c:\program files\[app name]
文件夹中存储敏感数据,而是使用用户配置文件文件夹。
参考 :