IIS 7.5权限混淆

我在我的网站上使用匿名身份validation 。 我有下面的目录结构,我不知道如何限制每个目录的权限

在这个时候,我认为我正在使用“ Authenticated Users ”提供的过于宽泛的默认权限。

c:\myweb\myisapi.dll (limit to execute only) c:\myweb\css\ (limit to readonly access) c:\myweb\datafiles\ (limit access to create files/directories and to delete files) 

请注意,应用程序执行正常,文件和目录被创build,但我很困惑,并希望有人可以提供给我直接的指示,设置上面所示的每个目录的权限。

任何意见将不胜感激,谢谢!

PS在IIS 7中做简单的事情并不容易,find如何做也很困难。

我很高兴,这不是我在这个链接中看到的愚蠢: http : //forums.iis.net/t/1158189.aspx?How+many+other+people+HATE+IIS7+admin+interface+

我希望有一个简单的“白痴certificate”指南,对于那些只想简单包装的人来说是可行的。

每个工作进程都以应用程序池帐户运行。 它主要是在启动而不是冒充任何人的时候这样做的。

当请求进来并且启用匿名身份validation时,IIS请求请求线程模拟匿名用户帐户(默认情况下为IUSR),或者什么都不做(如果您configuration了匿名身份validation以使用应用程序池帐户)。

让我们假设从应用程序模块/路由/怪异组件发生的事情和请求没有什么非常有趣的

GET /something.htm

简称为磁盘上的文件,位于该网站的根目录中。 为了得到这么多的工作,如果你想成为病态的绝对权限,你会:

  • 在非系统驱动器上创build一个文件夹
  • 从理论上讲,我们将删除该文件夹的所有权限并禁用对该文件夹的inheritance,所以我们从第一个原则开始。 (如果你只是在NTFS权限GUI中做到这一点,只是不要承诺,直到你有replace设置,否则生活变得困难)

你想要什么? 那么,几乎任何文件夹的基准权限是:

  • pipe理员:完全控制
  • 系统:完全控制

你可以把它归结为其他组合,但pipe理员和系统无论如何都可以做任何事情,所以它不会形成强大的障碍。

如果您不在其中一个组中,则可能需要将您的ThisSite Web Admin组添加到该列表中。

对于IIS 7及更高版本,您至less需要在该位置可以访问web.config,以便工作进程(在模拟之前,因此应用程序池帐户)可以build立configuration。

没有改变其他默认值,我们可以简单地做到这一点:

  • IIS_IUSRS:读取

但是,这有点不具体,可以想象,让另一个Web应用程序来读取网站的内容和configuration,所以相反:

  • IIS AppPool \ App池名称:读取

涵盖我们的工作进程启动和阅读configuration。 在网站的根目录设置阅读有整个网站只读,除了pipe理员或系统(正如我们已经介绍了NTFS权限已经)的巧合。 所以,不要试图让事情变成“只读”,相反,你真的只想让特定的人写东西。

回到阅读和匿名的主题,如果匿名帐户是IUSR,我们需要添加

  • IUSR:阅读

我们希望匿名用户帐户明确地访问任何项目或内容。

如果匿名帐户是应用程序池帐户,我们已经sorting,因为我们已经添加它。

在那时候:

  • 请求进来/something.htm。
  • 如果应用程序池未运行,则作为应用程序池帐户进行需求启动
  • 尝试从站点根目录(以及URL的任何子段)读取web.config,
  • 应用程序池(工作线程)在接收到请求时模拟IUSR(或者根据匿名validation设置执行任何操作)
  • 工作线程尝试访问请求的资源
    • 如果成功,则返回内容
    • 如果不成功,并且configuration了HTTP身份validation,则会提示input凭据
    • 或者如果没有selectauth方法就会失败

回到你问的问题,看起来可能有内置的假设,在每一个情况下都不成立。 在上面的列表中,看起来像是在网站根目录下看起来像应用程序内容的意义不可读的转储,但是某些内容需要具有写入权限。

如果这是为了“安全”的信息,通过networking没有得到要求:

  • 不要把它放在网站根目录下(通过configuration错误,网站根目录下的所有内容都可能变成可用)
  • 把它放在网站根外的某个地方
  • 不要让匿名用户写信给它

还有一个ISAPI dll(它是什么?谁调用它?它可以被安装在其他地方,并映射脚本?“否”是一个合法的响应),可能需要应用程序池帐户读取权限(已经sorting在上面的列表)需要IIS处理程序执行权限(注意:与NTFS读取和执行权限不同,并且通常希望避免Web目录的处理程序执行权限,因为这是人们如何在Web服务器(如果不安全的情况下)上载和运行可怕代码的方式)。

我很乐意给你一个“简单”的指导,但更好的答案是:我不认为你一定要做你所要求的。 如果你打算这样做,就用NTFS权限来这样做。 如果它是第三方应用程序,请为IIS 7编写一个指南,因为6使用了过载的术语。