核心概念:IIS 权限的三个层次
在 IIS 中,网站的访问权限是分层设置的,理解这三个层次至关重要:

- 文件系统权限 (NTFS 权限):这是最底层、最安全的权限,它直接控制 Windows 操作系统级别的用户或用户组对网站文件夹和文件的访问能力。无论 IIS 如何设置,如果用户没有 NTFS 权限,就无法访问文件。
- IIS 网站级别权限:这是在 IIS 管理器中设置的权限,位于“功能视图” -> “请求筛选” -> “编辑功能设置”中,它控制一些基本的 Web 服务行为,如是否允许执行脚本、是否允许读取文件内容等。
- IIS 授权规则:这是最灵活、最精细的权限控制层,它位于“功能视图” -> “授权规则”中,你可以基于 URL、文件、HTTP 方法(如 GET, POST)以及用户/角色来创建允许或拒绝的规则,这些规则会覆盖 NTFS 权限和网站级别权限。
最佳实践建议:优先使用 NTFS 权限进行基础设置,然后使用 IIS 授权规则进行更精细化的控制。
详细设置步骤
假设我们要设置一个名为 MyWebSite 的网站,其物理路径是 C:\inetpub\wwwroot\MyWebSite。
第 1 步:设置 NTFS 文件系统权限
这是最基础的一步,决定了谁能在操作系统层面访问你的网站文件。
-
找到网站文件夹:在文件资源管理器中导航到你的网站物理路径,
C:\inetpub\wwwroot\MyWebSite。
(图片来源网络,侵删) -
右键点击文件夹 -> 属性。
-
切换到 “安全” 选项卡。
-
添加用户/组:
- 点击 “编辑”,然后点击 “添加”。
- 在输入框中输入用户名或用户组,对于大多数网站,推荐使用
IIS_IUSRS这个特殊的内置组,它代表了 IIS 的工作进程账户。 - 点击 “检查名称”,如果找到会下划线显示,然后点击 “确定”。
-
分配权限:
- 在组或用户名列表中,选中你刚刚添加的
IIS_IUSRS。 - 在下方的“权限”列表中,勾选允许的权限。
- 读取:最基本的权限,允许用户查看文件(如 HTML、图片)。必须勾选。
- 列出目录:允许用户浏览目录,如果目录下没有默认文档(如 index.html),会显示文件列表,通常建议勾选。
- 写入:允许用户修改或创建文件。对于静态网站,不要勾选! 对于需要用户上传文件的网站(如博客、论坛),才需要勾选。
- 读取和执行:通常与“读取”一起勾选,允许运行脚本(如 ASP.NET, PHP)。
- 修改:比“写入”权限更高,允许删除和修改文件,一般不需要。
- 完全控制:拥有所有权限。极其危险,请谨慎使用!
推荐配置:
- 静态网站/只读内容:
IIS_IUSRS用户只勾选 “读取” 和 “读取和执行”。 - 允许用户上传:
IIS_IUSRS用户勾选 “读取”、“读取和执行” 和 “写入”。
- 在组或用户名列表中,选中你刚刚添加的
第 2 步:设置 IIS 网站级别权限
这一步控制 IIS 处理请求的方式。
-
打开 IIS 管理器:可以通过服务器管理器 -> 工具 -> Internet Information Services (IIS) 管理器 打开。
-
选择你的网站:在左侧“连接”窗格中,展开服务器节点,然后点击你的网站(如
MyWebSite)。 -
打开请求筛选设置:在中间的“功能视图”中,找到并双击 “请求筛选”。
-
编辑功能设置:在右侧的“操作”窗格中,点击 “编辑功能设置...”。
-
配置权限:
- :默认勾选,表示允许读取文件内容,如果取消勾选,用户将无法访问任何文件。
- 脚本:默认勾选,表示允许执行脚本(.asp, .aspx, .php 等),如果取消勾选,脚本文件将作为纯文本返回。
- 执行:默认勾选,表示允许执行程序(如 .exe, .dll),如果只需要运行脚本而不执行程序,可以取消勾选。
- 忽略跟踪斜杠:默认勾选,可以忽略 URL 末尾的 。
推荐配置:对于大多数网站,保持默认设置即可。
第 3 步:配置身份验证和授权规则
这是实现“谁能访问”的核心部分,这里我们重点讲解最常用的两种身份验证方式。
1 身份验证
身份验证是“你是谁?”的过程,决定用户如何证明自己的身份。
-
在 IIS 管理器中选择你的网站。
-
在“功能视图”中,双击 “身份验证”。
-
你会看到以下几种身份验证方式:
- 匿名身份验证:最常见的方式,任何用户都可以访问网站,无需提供用户名和密码,IIS 会使用一个内置的账户(通常是
IUSR)来代表匿名用户访问文件。确保 NTFS 权限中IUSR或IIS_IUSRS有“读取”权限。 - 基本身份验证:浏览器会弹出登录框,要求输入用户名和密码,密码是 Base64 编码传输的,不安全,除非配合 SSL/TLS (HTTPS) 使用。
- Windows 身份验证:使用 Windows 的用户账户进行验证,适用于企业内网,安全性高,但配置稍复杂。
- 摘要式身份验证:比基本认证安全,密码经过哈希处理,但也需要配合 SSL/TLS。
- .NET Passport 身份验证:一种已过时的微软账户认证方式。
如何启用:
- 匿名访问:直接右键点击 “匿名身份验证” -> “启用”。
- 需要登录访问:禁用“匿名身份验证”,然后启用“基本身份验证”或“Windows 身份验证”。
- 匿名身份验证:最常见的方式,任何用户都可以访问网站,无需提供用户名和密码,IIS 会使用一个内置的账户(通常是
2 授权规则
授权是“你被允许做什么?”的过程,基于身份验证的结果来允许或拒绝访问。
-
在 IIS 管理器中选择你的网站。
-
在“功能视图”中,双击 “授权规则”。
-
默认情况下,可能会有一条规则
允许所有用户,这是匿名访问的根源。拒绝匿名用户,只允许特定用户访问
- 在右侧“操作”窗格中,点击 “添加允许/拒绝规则...”。
- 选择 “拒绝”。
- 角色:选择 “特定用户”。
- 在输入框中输入要拒绝的用户名或组,
ANONYMOUS LOGON(代表所有匿名用户)。 - 点击 “确定”。
- (可选)再添加一条 “允许” 规则,指定允许访问的用户,
admin或Administrators组。
只允许匿名用户访问特定文件夹,其他文件夹需要登录
- 确保网站的“匿名身份验证”是启用的。
- 在“授权规则”中,右键点击空白处,选择 “添加允许/拒绝规则...”。
- 选择 “允许”。
- 角色:选择 “所有用户”。
- 路径:点击右侧的 按钮,选择需要允许匿名访问的文件夹,
C:\inetpub\wwwroot\MyWebSite\public。 - 点击 “确定”。
- 这样,
public文件夹及其子文件夹下的内容可以被匿名访问,而网站根目录下的其他文件(如admin文件夹)则需要身份验证(需要你在其他地方配置)。
总结与最佳实践
| 权限类型
