IIS 7.5 权限混乱

IIS 7.5 权限混乱

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

此时,我认为我正在使用'已认证用户' 这个范围太过宽泛。

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)

请注意,应用程序执行正常,文件和目录已创建,但我非常困惑,希望有人可以为我提供设置每个目录如上所述的权限所需的简单说明。

任何建议都将非常感谢,谢谢!

PS 在 IIS 7 中做一些简单的事情并不容易,而且找到如何去做也很困难。

我很高兴这不是我的愚蠢,正如这个链接中看到的那样: http://forums.iis.net/t/1158189.aspx?许多其他人多么讨厌IIS7admininterface

我希望能有一个简明的“傻瓜式”指南,供那些只想完成一些简单事情的人使用。

答案1

每个工作进程都作为应用程序池帐户。它主要在启动时执行此操作,而不是冒充任何人。

当请求进入并且启用了匿名身份验证时,IIS 会要求请求线程模拟匿名用户帐户(默认情况下;IUSR)或不执行任何操作(如果您已将匿名身份验证配置为使用应用程序池帐户)。

让我们假设应用程序模块/路由/奇怪组件中没有发生什么非常有趣的事情,并且请求

获取/某物.htm

仅指磁盘上的文件,位于该网站的根目录中。要实现这么多功能,如果您想要绝对的权限病理学,您需要:

  • 在非系统驱动器上创建文件夹
  • 名义上,我们将删除该文件夹的所有权限并禁用该文件夹的继承,因此我们从第一原则开始。(如果您只是在 NTFS 权限 GUI 中执行此操作,那么在设置好替换之前不要提交更改,否则生活会变得困难)

你想要什么?好吧,几乎所有文件夹的基本权限都是:

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

您可以将其减少到其他组合,但管理员和系统无论如何都可以做任何事情,因此它不会形成强大的障碍。

如果您不属于其中一个群组,您可能需要将您的 ThisSite Web 管理员组添加到该列表中。

对于 IIS 7 及更高版本,您需要至少web.config 可在该位置访问,以便工作进程(在模拟之前,即应用程序池帐户)可以确定配置是什么。

如果不改变其他默认设置,我们可以简单地这样做:

  • IIS_IUSRS:读取

但这有点不具体,可能会允许另一个 Web 应用程序读取网站内容和配置,因此:

  • IIS AppPool\应用程序池名称:读取

介绍我们的工作进程如何启动和读取配置。在站点根目录下设置“读取”可以巧合地使整个站点变为只读,但管理员或系统除外(我们已经在 NTFS 权限中介绍了这一点)。因此,您不是想让内容“只读”,而是想让特定人员可以写入内容。

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

  • IUSR : 读取

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

如果 Anon 帐户是应用程序池帐户,我们会进行排序,因为我们已经添加了它。

在那时候:

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

--

回到你刚才的问题,似乎存在一些内置假设,但这些假设并非在所有情况下都成立。在上面的列表中,你似乎在站点根目录下有一个看起来不可读的应用程序内容转储,但某些东西需要对它具有写入权限。

如果这是“安全”信息,不会通过网络请求:

  • 不要将其放在网站根目录下(由于配置错误,网站根目录下的所有内容都可能在某些时候变得可用)
  • 请将其放在站点根目录之外的某个位置
  • 不允许匿名用户写入

还有一个 ISAPI dll(?是吗?谁调用它?是否可以将其安装在其他地方并改为脚本映射?“否”是合法的回答),它可能需要应用程序池帐户读取权限(已在上面的列表中排序)并且可能需要 IIS 处理程序执行权限(注意:与 NTFS 读取和执行权限不同,并且您通常要避免 Web 目录的处理程序执行权限,因为如果不安全,人们就会设法在 Web 服务器上上传和运行可怕的代码)。

我很想为您提供上述内容的“简单”指南,但更好的答案是:我认为您不一定想按照您问的方法去做。如果您要这样做,请使用 NTFS 权限这样做。如果是第三方应用程序,请索要为 IIS 7 编写的指南,因为 6 使用了重载术语。

相关内容