核心原则:最小权限原则
在设置任何权限之前,请务必记住 “最小权限原则”,即只授予用户完成其任务所必需的最小权限,这能有效减少安全风险。

(图片来源网络,侵删)
IIS 级别的权限 (网站级别)
这些权限在 IIS 管理器中直接配置,控制着客户端(如浏览器)可以对网站执行哪些操作,它们位于网站的 “功能视图” -> “授权规则” (Authorization Rules) 中。
如何访问:
- 打开 IIS 管理器。
- 在左侧的“连接”窗格中,选择你的网站。
- 在中间的“功能视图”中,双击 “授权规则” (Authorization Rules)。
主要权限项:
- 读取:允许用户浏览和下载文件,这是绝大多数网站(如静态 HTML、图片、CSS、JS 文件)的默认权限。如果网站无法显示内容,首先检查此项是否已启用。
- 脚本:允许用户执行脚本文件(如 .asp, .aspx, .php 等),如果您的网站是动态的,需要此项。
- 执行:这是一个非常危险的权限,它允许用户执行任何文件,包括可执行文件 (.exe) 和脚本。对于绝大多数网站,此项都应保持“无”,只有当您明确需要运行某些非脚本的可执行程序时才启用,例如某些特定的 ISAPI 过滤器。
- 写入:允许用户上传或修改文件。此项权限应极其谨慎地授予,通常只对需要用户上传内容的特定目录(如
upload文件夹)启用,并且要配合严格的文件类型限制,对于整个网站,通常保持禁用。 - 浏览:当用户请求一个目录而不是文件时,是否显示该目录下的文件列表。出于安全考虑,此项通常保持“禁用”,以防止网站结构信息泄露。
授权规则:
- 默认规则:IIS 默认会添加一条
允许所有用户的规则,这通常意味着任何人都可匿名访问。 - 添加规则:您可以基于特定用户或用户组来精细化控制。
- 允许:为特定用户/组授予权限。
- 拒绝:明确拒绝特定用户/组的访问。“拒绝”规则的优先级高于“允许”规则。
- 特定用户:可以输入 Windows 用户名、用户组名(如
IIS_IUSRS)或内置账户(如ANONYMOUS LOGON)。
操作系统级别的权限 (文件系统级别)
这是更底层、更关键的权限控制,即使 IIS 设置了“允许写入”,如果操作系统层面禁止了 IIS 进程写入文件,那么写入操作同样会失败,这确保了即使 IIS 被攻破,攻击者也无法轻易地修改服务器上的文件。
IIS 默认使用两个特殊的账户来运行应用程序池:
IIS_IUSRS:这是一个内置的用户组,用于隔离 IIS 的进程,默认情况下,IIS 应用程序池以ApplicationPoolIdentity身份运行,这实际上就是以IIS_IUSRS组的身份运行。NETWORK SERVICE:这是另一个内置账户,具有更低的权限,用于访问网络资源,一些旧版本的 IIS 可能会使用它。
如何设置:
- 在文件资源管理器中,导航到您的网站根目录。
- 右键点击该文件夹,选择 “属性”。
- 切换到 “安全” 选项卡。
- 点击 “编辑...”,“添加...” 来添加用户或用户组。
- 输入
IIS_IUSRS,点击“检查名称”确认,然后点击“确定”。
推荐的权限配置:
| 文件夹/文件 | 用户/组 | 权限 (建议) | 说明 |
|---|---|---|---|
| 网站根目录 | SYSTEM |
完全控制 | 系统账户需要完全控制权限来管理文件。 |
Administrators |
完全控制 | 管理员组需要完全控制权限。 | |
IIS_IUSRS |
读取和执行、列出文件夹内容、读取 | 这是最核心的设置,允许 IIS 读取和执行网站文件,但不能修改或删除。 | |
Users |
读取 | 允许服务器上的其他标准用户读取文件(可选,根据安全策略)。 | |
Creator Owner |
特殊 | 继承自父级,通常无需手动设置。 | |
临时文件目录 (如 ASP.NET Temp) |
IIS_IUSRS |
完全控制 | ASP.NET 等技术需要在此目录编译和缓存文件,需要写入权限。 |
上传目录 (如 upload) |
IIS_IUSRS |
读取、写入、读取和执行 | 仅对需要上传的目录设置,允许 IIS 写入上传的文件,但通常不应有“删除”权限,以防恶意删除。 |
| Web.config | IIS_IUSRS |
读取、读取和执行 | 配置文件通常只允许读取,不允许修改。 |
特别注意:

(图片来源网络,侵删)
- 继承:确保子文件夹和文件从父目录继承这些权限,如果不希望继承,可以手动为特定目录设置更严格的权限。
- 不要直接给
Everyone或Users组过高的权限,这会带来巨大的安全风险。
综合最佳实践步骤
假设您要部署一个新的静态网站,并允许用户在 upload 文件夹上传图片。
步骤 1:设置 IIS 权限
- 在 IIS 管理器中,选择您的网站。
- 双击 “授权规则”。
- 默认的
允许所有用户规则对于静态网站是合适的,如果您需要更精细控制,可以删除它,- 点击 “添加允许规则...”。
- 角色选择 “所有用户”。
- 权限勾选 “读取” 和 “脚本”。
- 点击“确定”。
- 单独为
upload文件夹设置 IIS 权限:- 在 IIS 管理器左侧,选择您的网站下的
upload文件夹。 - 双击 “授权规则”。
- 添加一条 “允许所有用户” 的规则,并勾选 “读取” 和 “写入” 权限。
- 在 IIS 管理器左侧,选择您的网站下的
步骤 2:设置文件系统权限
- 在文件资源管理器中,右键点击网站根目录,选择 “属性” -> “安全” -> “编辑”。
- 添加
IIS_IUSRS用户组,并授予其 “读取和执行”、“列出文件夹内容”、“读取” 权限。 - 点击“确定”。
- 单独为
upload文件夹设置权限:- 右键点击
upload文件夹,选择 “属性” -> “安全” -> “编辑”。 - 添加
IIS_IUSRS用户组,并授予其 “读取和执行”、“列出文件夹内容”、“读取”、“写入” 权限。 - 点击“确定”。
- 右键点击
步骤 3:验证
- 访问您的网站主页,确保页面正常显示。
- 尝试上传一张图片到
upload文件夹,确保上传成功。 - 尝试删除或修改网站根目录下的一个 HTML 文件,如果操作被拒绝,则说明权限设置正确。
通过以上步骤,您就为网站建立了一个既安全又功能完备的访问权限体系。
