菜鸟科技网

IIS文件权限如何正确设置?

  1. NTFS 文件系统权限:操作系统层面的权限,决定哪个用户账户可以对文件和文件夹进行读取、写入、删除等操作。
  2. IIS 网站权限:IIS 应用程序层面的权限,决定 IIS 进程可以如何访问这些文件。

核心原则:最终的有效权限是这两者权限的交集。 一个用户/进程要想访问文件,必须同时拥有 NTFS 权限和 IIS 权限。

IIS文件权限如何正确设置?-图1
(图片来源网络,侵删)

下面我将分步详细讲解如何设置这两类权限。


第一步:设置 NTFS 文件系统权限

这是最基础也是最关键的一步,NTFS 权限是 Windows 操作系统强制执行的,即使 IIS 配置了允许访问,NTFS 权限禁止,访问也会被拒绝。

打开文件/文件夹属性

在 IIS 网站对应的物理目录(C:\inetpub\wwwroot\MyWebSite)上右键,选择 “属性”

切换到“安全”选项卡

在这里你可以看到当前有权访问该文件夹的用户和组。

IIS文件权限如何正确设置?-图2
(图片来源网络,侵删)

添加或编辑用户/组

我们主要关注两个用户/组:

  • IIS_IUSRS:这是 IIS 6 及以后版本默认使用的内置用户组,IIS 的工作进程(如 w3wp.exe)默认以这个组的身份运行。这是最推荐使用的账户
  • SYSTEM:本地系统账户,拥有最高权限,某些情况下(如需要写入日志、临时文件等),可能需要赋予它权限。
  • Administrators:管理员组,通常默认有完全控制权限。
  • Authenticated UsersUsers:所有经过身份验证的用户或所有普通用户。请谨慎授予此组写入权限,否则任何能登录你服务器的用户都可能修改你的网站文件,造成巨大安全风险。

操作:

  • 点击 “编辑” 按钮来修改现有权限,或点击 “添加” 按钮来添加新的用户/组。
  • 点击 “高级” -> “立即查找”,输入 IIS_IUSRSSYSTEM,然后点击“检查名称”并确定。

分配合适的权限

对于不同的文件夹,权限分配策略不同:

对于网站根目录和只读内容(如 HTML, CSS, JavaScript, 图片、下载文件等):

IIS文件权限如何正确设置?-图3
(图片来源网络,侵删)
  • IIS_IUSRS:授予 “读取和执行”“列出文件夹内容”“读取” 权限。不要授予“写入”权限。
  • SYSTEMAdministrators:可以授予 “完全控制” 权限,方便管理和维护。
  • Users:通常只授予 “读取”“执行” 权限。

需要写入权限的目录(如上传文件夹、日志文件夹、临时文件夹等):

  • IIS_IUSRS:除了上述的读取权限外,额外授予“写入” 权限。
  • SYSTEMAdministrators:保持 “完全控制”
  • Users不建议直接授予写入权限,除非你有特殊需求,如果允许匿名用户上传,则需要谨慎处理。

继承和替换:

  • 在设置权限时,你会看到“权限条目”窗口下方有“允许从父项继承的权限传播到该对象和所有子对象”的选项。
  • 默认是勾选的,这意味着你对该文件夹设置的权限会自动应用到其下的所有子文件和子文件夹,这通常是你想要的行为。
  • 如果需要为某个子文件夹设置不同的权限,可以取消勾选,然后选择“仅将权限条目明确地从此对象中删除”,然后为该子文件夹单独设置。

第二步:设置 IIS 网站权限

NTFS 权限设置好后,我们还需要在 IIS 管理器中配置相应的网站权限,这些权限是 IIS 的“门卫”,它决定了哪些类型的请求可以被处理。

打开 IIS 管理器

  • 在服务器上,按 Win + R,输入 inetmgr 并回车。
  • 或者在服务器管理器中找到“工具” -> “Internet Information Services (IIS) 管理器”。

选择你的网站

在左侧的“连接”窗格中,展开服务器节点,找到并点击你的网站(默认网站”或你创建的网站)。

打开“编辑权限”窗口

在右侧的“操作”窗格中,点击 “编辑权限”,这会直接打开该网站对应物理目录的 属性窗口,并自动定位到 “安全” 选项卡。(这和第一步是同一个窗口,方便你核对)

切换到“目录安全性”或“功能视图”中的相关设置

在 IIS 管理器中,网站权限的特定设置位于不同的地方:

a) 策略(Handler Mappings)

  • 双击 “处理程序映射”
  • 在右侧操作栏,点击 “请求限制...”
  • 在弹出的窗口中,切换到 “执行” 选项卡。
    • 如果你的目录是用于执行脚本(如 .php, .aspx, .asp),请勾选 “脚本”“脚本和可执行文件”
    • 如果只是静态内容(如 HTML, 图片),请选择 “无”
    • 这个设置与 NTFS 的“读取和执行”权限相对应。

b) 权限(Authorization Rules)

  • 这是最直接控制访问权限的地方,双击 “授权规则”
  • 默认情况下,你可能已经有一条规则:<allow users="*" />,这表示允许所有匿名用户访问。
  • 你可以在这里添加或修改规则:
    • 添加允许规则:点击“添加允许规则”,可以选择特定用户、角色或所有匿名用户,并指定他们可以执行的操作(读取、执行等)。
    • 添加拒绝规则:点击“添加拒绝规则”,可以明确禁止某个用户或组的访问,拒绝规则的优先级高于允许规则。

c) SSL 设置

  • 双击 “SSL 设置”
  • 如果你的网站需要 HTTPS,请勾选 “要求 SSL”,这会强制所有连接都必须使用加密通道。
  • 客户端证书:如果需要,可以配置客户端证书认证,提供更高级别的安全。

常见场景与最佳实践

场景1:标准静态网站(HTML, CSS, JS, 图片)

  • NTFS 权限:
    • IIS_IUSRS: 读取和执行、列出文件夹内容、读取。
    • SYSTEM, Administrators: 完全控制。
  • IIS 权限:
    • 授权规则:允许匿名用户。
    • 处理程序映射:设置为“无”(或“脚本”,如果目录里有 .js 文件需要执行)。

场景2:允许用户上传文件的网站

  • NTFS 权限:
    • 网站根目录: IIS_IUSRS 只有读取权限。
    • 上传文件夹 (e.g., /uploads):
      • IIS_IUSRS: 读取和执行、列出文件夹内容、读取、写入
      • SYSTEM, Administrators: 完全控制。
  • IIS 权限:
    • 授权规则:允许匿名用户。
    • 处理程序映射:根据需要配置(如果上传的是图片,可能需要“脚本”权限来动态处理)。
    • 重要:确保上传目录不能执行脚本!可以通过在 web.config 中配置 <security><requestFiltering><fileExtensions> 来禁止执行特定扩展名(如 .php, .aspx),或者通过 IIS 的“处理程序映射”移除对该目录下不需要执行脚本的映射。

场景3:.NET 或 PHP 动态网站

  • NTFS 权限:
    • 网站主目录:IIS_IUSRS 需要读取和执行权限,因为 .aspx.php 文件需要被 IIS 解释执行。
    • 如果网站需要写入日志或临时文件,给对应目录写入权限。
  • IIS 权限:
    • 授权规则:允许匿名用户。
    • 处理程序映射:确保 .aspx (ASP.NET) 或 .php (PHP) 的映射已存在并启用。

总结与排错

  1. 先 NTFS,后 IIS:永远先确保 NTFS 权限设置正确,因为它是底层基础。
  2. 使用 IIS_IUSRS:这是 IIS 推荐的最佳实践,避免使用 NETWORK SERVICESYSTEM,除非有特殊原因。
  3. 最小权限原则:只授予完成任务所必需的最小权限,不要轻易给 Users 组或 Authenticated Users 组写入权限。
  4. 权限继承:利用好权限继承,简化管理,只在必要时进行覆盖。
  5. 排错
    • 2 - 未授权:通常是 NTFS 权限问题,检查 IIS_IUSRS 是否有读取权限。
    • 14 - 拒绝目录列表:IIS 默认不显示目录索引,可以在 IIS 管理器中“目录浏览”功能中启用,或者确保首页文件(如 index.html, default.aspx)存在。
    • 19 - 配置错误:可能是 web.config 文件或 IIS 配置的权限问题,确保 IIS_IUSRS 有读取 web.config 的权限。

通过以上步骤,你就可以为你的 IIS 网站设置安全且功能完善的文件权限了。

分享:
扫描分享到社交APP
上一篇
下一篇