在 IIS 7 中配置 FTP 用户隔离

作者:Robert McMurray

兼容性

版本 说明
IIS 7.5 FTP 7.5 服务作为 Windows 7 和 Windows Server 2008 R2 中 IIS 7.5 的功能提供。
IIS 7.0 FTP 7.0 和 FTP 7.5 服务是 IIS 7.0 带外提供的,需要从以下 URL 下载和安装该服务:https://www.iis.net/downloads/microsoft/ftp

介绍

Microsoft 创建了一个新的 FTP 服务,该服务针对 Windows Server 2008 完全重新编写。 这种新的 FTP 服务包含许多新功能,使 Web 作者能够比以前更好地发布内容,并为 Web 管理员提供了更多的安全性和部署选项。

本文档将指导你使用新的 FTP 用户界面通过直接编辑 IIS 配置文件来完成各种 FTP 用户隔离设置。

注意

本演练包含使用本地管理员帐户登录到 FTP 站点的一系列步骤。 这些步骤只能在服务器本身上使用环回地址或通过 SSL 从远程服务器执行。 如果你偏爱使用单独的用户帐户而非管理员帐户,则在必要时需要创建合适的文件夹并为用户帐户设置正确的权限。

先决条件

必须准备好以下各项才能完成本文中的过程:

  1. 必须在 Windows Server 2008 RC0 服务器上安装 IIS 7,并且必须安装 Internet Information Services 管理器。

  2. 必须安装新的 FTP 服务。 可以使用以下链接之一从 https://www.iis.net/ 网站下载并安装 FTP 服务:

    • FTP for IIS 7 (x64)
    • FTP for IIS 7 (x86)
  3. 需要为 FTP 发布创建根目录:

    • %SystemDrive%\inetpub\ftproot 处创建一个文件夹

    • 设置允许匿名访问的权限:

      • 打开命令提示符。

      • 输入以下命令:

        ICACLS "%SystemDrive%\inetpub\ftproot" /Grant IUSR:R /T
        
      • 关闭命令提示符。

  4. 需要创建其他内容文件夹:

    • %SystemDrive%\inetpub\ftproot\LocalUser\Public 处创建一个文件夹
    • %SystemDrive%\inetpub\adminfiles 处创建一个文件夹

使用 FTP 站点向导创建 FTP 站点

在第一部分,我们将创建新的 FTP 站点,匿名用户可以打开该站点进行只读访问,管理员帐户可以对该站点进行读/写访问。

  1. 在 IIS 管理器的“连接”窗格中,单击树中的“站点”节点

  2. 如下图所示,右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”
    Screenshot of the I I S Manager screen with a focus on the Add F T P Site option in the right-click drop-down menu over the Sites folder.

  3. 显示“添加 FTP 站点”向导时

    • 在“FTP 站点名称”框中输入“我的新 FTP 站点”,然后导航到在先决条件部分中创建的 %SystemDrive%\inetpub\ftproot 文件夹。 请注意,如果选择键入内容文件夹的路径,可以在路径中使用环境变量。
    • 完成这些项,然后单击“下一步”
      Screenshot of the Add F T P Site wizard, displaying the Site Information section.
  4. 在向导的下一页:

    • 你通常会从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者可以选择接受默认选择“所有未分配”。由于你稍后将在本演练中使用管理员帐户,因此需要确保限制对服务器的访问,并通过在“IP 地址”框中键入“127.0.0.1”来输入计算机的本地环回 IP 地址
    • 通常你会在“端口”框中输入 FTP 站点的 TCP/IP 端口。 对于本演练,请选择接受默认端口 21。
    • 本演练不使用主机名,因此请确保“虚拟主机”框为空
    • 确保将“证书”下拉列表设置为“未选择”,并选择“允许 SSL”选项
    • 完成这些项,然后单击“下一步”
      Screenshot of the Add F T P Site screen's Binding and S S L Settings section with a focus on the Next option.
  5. 在向导的下一页:

    • 为“身份验证”设置选择“匿名”
    • 对于“授权”设置,请从“允许以下对象访问”下拉列表中选择“匿名用户”,然后为“权限”选项选择“读取”
    • 完成这些项,然后单击“完成”
      Screenshot of the Add F T P Site screen's Authentication and Authorization Information section with a focus on the Finish option.
  6. 在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
    Screenshot of the I I S Manager screen showing the My New F T P Site Home section displaying F T P features.

  7. 我们需要添加基本身份验证,以便用户可以登录。 为此,请双击“FTP 身份验证”图标打开 FTP 身份验证功能页
    Screenshot of the I I S Manager screen with a focus on the F T P Authentication option in the My New F T P Site Home section.

  8. 显示“FTP 身份验证”页后,请突出显示“基本身份验证”,然后单击“操作”窗格中的“启用”
    Screenshot of the I I S Manager screen's F T P Authentication section with a focus on the Enable option in the Actions pane.

  9. 在 IIS 管理器中,单击 FTP 站点对应的节点以重新显示所有 FTP 功能的图标。

  10. 我们需要添加一条授权规则,以便管理员可以登录。 为此,请双击“FTP 授权规则”图标打开 FTP 授权规则功能页
    Screenshot of the I I S Manager screen's F T P Authorization Rules option in the F T P section.

  11. 显示“FTP 授权规则”页后,单击“操作”窗格中的“添加允许规则”
    Screenshot of the I I S Manager screen's F T P Authorization Rules section with a focus on the Add Allow Rule option in the Actions pane.

  12. 显示“添加允许授权规则”对话框后

    • 选择“指定的用户”,然后在框中键入“administrator”
    • 对于“权限”,请选择“读取”和“写入”
    • 完成这些项,然后单击“确定”
      Screenshot of the Add Allow Authorization Rule dialog box.

总结

回顾在本部分中完成的项:

  1. 你新建了名为“我的新 FTP 站点”的新 FTP 站点,该站点的内容根目录位于 %SystemDrive%\inetpub\ftproot
  2. 你将 FTP 站点绑定到了计算机端口 21 上的本地环回地址,并选择了不对 FTP 站点使用安全套接字层 (SSL)。
  3. 你为 FTP 站点创建了一个默认规则,以允许匿名用户对文件进行“读取”访问。
  4. 你添加了一条授权规则,该规则向管理员帐户授予对 FTP 站点的“读取”和“写入”权限。
  5. 你向 FTP 站点添加了基本身份验证。

了解新的 FTP 用户隔离设置

  1. 在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。

  2. 双击“FTP 用户隔离”图标打开 FTP 用户隔离功能
    Screenshot of the I I S Manager screen's My New F T P Site Home section with a focus on the F T P User Isolation option.

  3. 显示“FTP 用户隔离”功能页后,可以看到有五个不同的可用选项
    Screenshot of the I I S Manager screen's F T P User Isolation feature page.

  4. 这五个选项定义为:

    • 不隔离用户。 用户启动位置

      • FTP 根目录

        • 此选项指定所有 FTP 会话均在 FTP 站点的根目录中启动。

          注意

          此选项是此 FTP 服务器中的新选项,它只会禁用所有用户隔离或启动文件夹逻辑。

      • 用户名目录

        • 此选项指定所有 FTP 会话均在与当前登录用户同名的物理或虚拟目录中启动(如果该文件夹存在);否则,FTP 会话将在 FTP 站点的根目录中启动。

          注意

          此选项与在 IIS 6.0 FTP 服务器中选择“无用户隔离”相同。 有关如何使用此选项的更多信息,请参阅使用 FTP 用户隔离托管多个 FTP 站点 (IIS 6.0) 主题中的“不隔离用户模式”部分。

    • 隔离用户。 仅限用户访问以下目录

      • 用户名目录(禁用全局虚拟目录)

        • 此选项指定要将 FTP 用户会话隔离到与 FTP 用户帐户同名的物理或虚拟目录。 用户只能看见自己的 FTP 根位置,因此受限制而无法向上浏览物理或虚拟目录树。 将忽略创建的所有全局虚拟目录。

          注意

          此选项是此 FTP 服务器中的新选项。

      • 用户名物理目录(启用全局虚拟目录)

        • 此选项指定要将 FTP 用户会话隔离到与 FTP 用户帐户同名的物理目录。 用户只能看见自己的 FTP 根位置,因此受限制而无法向上浏览物理目录树。 创建的所有全局虚拟目录适用于所有用户。

          注意

          此选项与在 IIS 6.0 FTP 服务器中选择“用户隔离”相同。

      • 在 Active Directory 中配置的 FTP 主目录

        • 此选项指定要将 FTP 用户会话隔离到在每个 FTP 用户的 Active Directory 帐户设置中配置的主目录。

          注意

          此选项与在 IIS 6.0 FTP 服务器中选择“Active Directory 用户隔离”相同。

按物理目录配置用户隔离设置

仅按物理目录隔离用户时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的物理目录。 但是,创建的所有全局虚拟目录适用于所有用户。

  1. 在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
  2. 双击“FTP 用户隔离”图标打开 FTP 用户隔离功能
    Screenshot of the I I S Manager screen's My New F T P Site Home section with the F T P User Isolation icon being highlighted.
  3. 显示“FTP 用户隔离”功能页后,选择“用户名物理目录(启用全局虚拟目录)”选项,然后单击“操作”窗格中的“应用”
    Screenshot of the I I S Manager screen's F T P User Isolation section with a focus on the Apply option.

登录到 FTP 站点

现在可以使用用户隔离登录到 FTP 站点,但以下信息适用:

  1. 如果匿名登录到 FTP 站点,则会话将限制为在“先决条件”部分创建的“LocalUser\Public”文件夹。
  2. 如果你尝试使用管理员帐户登录到 FTP 站点,则登录请求将被拒绝,因为没有为管理员帐户定义主目录。 若要允许管理员帐户登录,需要在 %SystemDrive%\inetpub\ftproot\LocalUser\Administrator 处为管理员帐户创建主目录。 然后,如果你使用管理员帐户登录到 FTP 站点,会话将限制为刚刚创建的“LocalUser\Administrator”文件夹。

总结

回顾在此步骤中完成的项:你使用“用户名物理目录(启用全局虚拟目录)”选项配置了 FTP 用户隔离。 使用此用户隔离模式时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的虚拟或物理目录,创建的所有全局虚拟目录将适用于所有用户。

若要为每个用户创建主目录,首先需要在 FTP 服务器的根文件夹下创建一个物理目录,该目录与域同名,或者为本地用户帐户命名为 LocalUser。 接下来,需要为每个要访问 FTP 站点的用户帐户创建一个物理目录。 下表列出了 FTP 服务随附的身份验证提供程序的主目录语法:

用户帐户类型 物理主目录语法
匿名用户 %FtpRoot%\LocalUser\Public
本地 Windows 用户帐户(需要基本身份验证) %FtpRoot%\LocalUser\%UserName%
Windows 域帐户(需要基本身份验证) %FtpRoot%\%UserDomain%\%UserName%
IIS 管理器或 ASP.NET 自定义身份验证用户帐户 %FtpRoot%\LocalUser\%UserName%

注意

在上表中,%FtpRoot% 是 FTP 站点的根目录;例如 C:\Inetpub\Ftproot

重要说明:全局虚拟目录已启用;所有 FTP 用户都可以访问在 FTP 站点根级别配置的所有虚拟目录,前提是他们具有足够的权限。

为所有目录配置用户隔离设置

隔离所有目录的用户时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的物理或虚拟目录。 此外,将忽略创建的所有全局虚拟目录。 在此步骤中,你将为所有目录配置用户隔离,并为管理员用户添加虚拟目录。

  1. 在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。

  2. 双击“FTP 用户隔离”图标打开 FTP 用户隔离功能
    Screenshot of the I I S Manager screen's My New F T P Site Home setion with the F T P User Isolation shortcut being highlighted.

  3. 显示“FTP 用户隔离”功能页后,选择“用户名目录(禁用全局虚拟目录)”选项,然后单击“操作”窗格中的“应用”
    Screenshot of the I I S Manager screen's F T P User Isolation section have the User name directory (disable global virtual directories) option selected.

  4. 展开 FTP 站点的树节点,然后右键单击“LocalUser”文件夹并单击“添加虚拟目录”

    注意

    在此示例中,“LocalUser”文件夹是物理目录,但也可以使用虚拟目录。

    Screenshot of the I I S Manager screen's Connections pane with a focus on the Add Virtual Directory option in the right-click drop-down menu.

  5. 显示“添加虚拟目录”对话框后

    • 为“别名”输入“administrator”
    • 为“物理路径”输入 %SystemDrive%\inetpub\adminfiles
    • 完成这些项,然后单击“确定”
      Screenshot of the Add Virtual Directory dialog box.

登录到 FTP 站点

现在可以使用用户隔离登录到 FTP 站点,但以下信息适用:

  1. 与步骤 3 中一样,如果匿名登录到 FTP 站点,则会话将限制为在“先决条件”部分创建的“LocalUser\Public”文件夹。
  2. 如果你使用管理员帐户登录到 FTP 站点,会话将限制为刚刚创建的“/LocalUser/administrator”虚拟目录。

总结

回顾在此步骤中完成的项:你使用“用户名目录(禁用全局虚拟目录)”选项配置了 FTP 用户隔离。 使用此用户隔离模式时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的虚拟或物理目录,并且将忽略创建的所有全局虚拟目录。

若要为每个用户创建主目录,首先需要在 FTP 服务器的根文件夹下创建一个虚拟或物理目录,该目录与域同名,或者为本地用户帐户命名为 LocalUser。 接下来,需要为每个要访问 FTP 站点的用户帐户创建一个虚拟或物理目录。 下表列出了 FTP 服务随附的身份验证提供程序的主目录语法:

用户帐户类型 物理主目录语法
匿名用户 %FtpRoot%\LocalUser\Public
本地 Windows 用户帐户(需要基本身份验证) %FtpRoot%\LocalUser\%UserName%
Windows 域帐户(需要基本身份验证) %FtpRoot%\%UserDomain%\%UserName%
IIS 管理器或 ASP.NET 自定义身份验证用户帐户 %FtpRoot%\LocalUser\%UserName%

注意

在上表中,%FtpRoot% 是 FTP 站点的根目录;例如 C:\Inetpub\Ftproot

全局虚拟目录将被忽略;任何 FTP 用户都无法访问在 FTP 站点根级别配置的所有虚拟目录。 必须在用户的物理或虚拟主目录路径下显式定义所有虚拟目录。