我刚刚从Win2003上的IIS6迁移到Win2012上的IIS8来托管ASP.NET应用程序。
在我的应用程序中的一个特定文件夹中,我需要创建和删除文件。将文件复制到新服务器后,当我尝试删除文件时,我一直看到以下错误:
对路径'D:\WebSites\myapp.co.uk\companydata\filename.pdf‘的
访问被拒绝。
当我检查IIS时,我看到应用程序正在DefaultAppPool帐户下运行,但是,我从未在此文件夹上设置Windows权限以包含IIS AppPool\DefaultAppPool
取而代之的是,为了停止呼叫客户,我在文件夹上授予了以下权限:
IUSR
IIS_IUSRS
(&E)
这似乎起作用了,但我担心设置了太多的特权。我在网上读到了关于这里是否真的需要IUSR的相互矛盾的信息。谁能说明一下,哪些用户/权限足以在此文件夹上创建和删除文档?另外,IUSR是IIS_IUSRS组的一部分吗?
更新和解决方案
请参阅my answer below。我不得不悲哀地这样做,因为最近的一些建议没有经过深思熟虑,甚至没有安全(国际海事组织)。
发布于 2016-04-13 19:39:39
我讨厌发布我自己的答案,但最近的一些答案忽略了我在自己的问题中发布的解决方案,这表明了一些方法是愚蠢的。
简而言之,您不需要在所有中编辑任何用户帐户权限。这样做只会带来风险。该过程完全在IIS中使用继承的权限进行管理。
将修改/写入权限应用于正确的用户帐户
当该域出现在站点列表下时,
在安全选项卡下,您将看到列出了MACHINE_NAME\IIS_IUSRS
。这意味着IIS自动拥有该目录的只读权限(例如,在站点中运行ASP.Net )。您不需要编辑此条目。
IIS AppPool\MyApplicationPoolName
,将MyApplicationPoolName
替换为您的域名或访问您站点的任何应用程序池,例如IIS AppPool\mydomain.com
提供任何修改或写入权限
发布于 2013-02-28 17:37:49
IUSR是IIS_IUSER group.so的一部分,我想你可以不用担心就可以删除IUSR的权限。Further Reading
然而,随着时间的推移,随着越来越多的Windows系统服务开始以NETWORKSERVICE的形式运行,出现了一个问题。这是因为作为NETWORKSERVICE运行的服务可以篡改以相同身份运行的其他服务。因为IIS工作进程在默认情况下运行第三方代码(Classic ASP、ASP.NET、PHP代码),所以现在应该将IIS工作进程与其他Windows系统服务隔离开来,并以唯一标识运行IIS工作进程。Windows操作系统提供了一种称为“虚拟帐户”的功能,该功能允许IIS为其每个应用程序池创建唯一标识。默认情况下,DefaultAppPool是分配给您创建的所有应用程序池的池。
若要使其更安全,可以将IIS标识更改为ApplicationPoolIdentity。
关于权限,Create和Delete总结了可以授予的所有权限。因此,无论您分配给IIS_USERS组的是什么,他们都将需要。没有更多,没有更少。
希望这能有所帮助。
发布于 2014-07-11 19:37:32
当我将IIS_IUSRS权限添加到站点文件夹时,像js和css这样的资源仍然是不可访问的(错误401,禁止)。然而,当我添加IUSR时,它变得没问题了。所以可以肯定的是,“你不能不担心地移除IUSR的权限”,亲爱的@Travis G@
https://stackoverflow.com/questions/14934006
复制相似问题