在 IIS 7 中配置 FTP 用户隔离
兼容性
版本 | 说明 |
---|---|
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 从远程服务器执行。 如果你偏爱使用单独的用户帐户而非管理员帐户,则在必要时需要创建合适的文件夹并为用户帐户设置正确的权限。
先决条件
必须准备好以下各项才能完成本文中的过程:
必须在 Windows Server 2008 RC0 服务器上安装 IIS 7,并且必须安装 Internet Information Services 管理器。
必须安装新的 FTP 服务。 可以使用以下链接之一从 https://www.iis.net/ 网站下载并安装 FTP 服务:
- FTP for IIS 7 (x64)
- FTP for IIS 7 (x86)
需要为 FTP 发布创建根目录:
在
%SystemDrive%\inetpub\ftproot
处创建一个文件夹设置允许匿名访问的权限:
打开命令提示符。
输入以下命令:
ICACLS "%SystemDrive%\inetpub\ftproot" /Grant IUSR:R /T
关闭命令提示符。
需要创建其他内容文件夹:
- 在
%SystemDrive%\inetpub\ftproot\LocalUser\Public
处创建一个文件夹 - 在
%SystemDrive%\inetpub\adminfiles
处创建一个文件夹
- 在
使用 FTP 站点向导创建 FTP 站点
在第一部分,我们将创建新的 FTP 站点,匿名用户可以打开该站点进行只读访问,管理员帐户可以对该站点进行读/写访问。
在 IIS 管理器的“连接”窗格中,单击树中的“站点”节点。
如下图所示,右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”。
显示“添加 FTP 站点”向导时:
- 在“FTP 站点名称”框中输入“我的新 FTP 站点”,然后导航到在先决条件部分中创建的
%SystemDrive%\inetpub\ftproot
文件夹。 请注意,如果选择键入内容文件夹的路径,可以在路径中使用环境变量。 - 完成这些项,然后单击“下一步”。
- 在“FTP 站点名称”框中输入“我的新 FTP 站点”,然后导航到在先决条件部分中创建的
在向导的下一页:
- 你通常会从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者可以选择接受默认选择“所有未分配”。由于你稍后将在本演练中使用管理员帐户,因此需要确保限制对服务器的访问,并通过在“IP 地址”框中键入“127.0.0.1”来输入计算机的本地环回 IP 地址。
- 通常你会在“端口”框中输入 FTP 站点的 TCP/IP 端口。 对于本演练,请选择接受默认端口 21。
- 本演练不使用主机名,因此请确保“虚拟主机”框为空。
- 确保将“证书”下拉列表设置为“未选择”,并选择“允许 SSL”选项。
- 完成这些项,然后单击“下一步”。
在向导的下一页:
- 为“身份验证”设置选择“匿名”。
- 对于“授权”设置,请从“允许以下对象访问”下拉列表中选择“匿名用户”,然后为“权限”选项选择“读取”。
- 完成这些项,然后单击“完成”。
在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
我们需要添加基本身份验证,以便用户可以登录。 为此,请双击“FTP 身份验证”图标打开 FTP 身份验证功能页。
显示“FTP 身份验证”页后,请突出显示“基本身份验证”,然后单击“操作”窗格中的“启用”。
在 IIS 管理器中,单击 FTP 站点对应的节点以重新显示所有 FTP 功能的图标。
我们需要添加一条授权规则,以便管理员可以登录。 为此,请双击“FTP 授权规则”图标打开 FTP 授权规则功能页。
显示“FTP 授权规则”页后,单击“操作”窗格中的“添加允许规则”。
显示“添加允许授权规则”对话框后:
- 选择“指定的用户”,然后在框中键入“administrator”。
- 对于“权限”,请选择“读取”和“写入”。
- 完成这些项,然后单击“确定”。
总结
回顾在本部分中完成的项:
- 你新建了名为“我的新 FTP 站点”的新 FTP 站点,该站点的内容根目录位于
%SystemDrive%\inetpub\ftproot
。 - 你将 FTP 站点绑定到了计算机端口 21 上的本地环回地址,并选择了不对 FTP 站点使用安全套接字层 (SSL)。
- 你为 FTP 站点创建了一个默认规则,以允许匿名用户对文件进行“读取”访问。
- 你添加了一条授权规则,该规则向管理员帐户授予对 FTP 站点的“读取”和“写入”权限。
- 你向 FTP 站点添加了基本身份验证。
了解新的 FTP 用户隔离设置
在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
双击“FTP 用户隔离”图标打开 FTP 用户隔离功能。
显示“FTP 用户隔离”功能页后,可以看到有五个不同的可用选项:
这五个选项定义为:
不隔离用户。 用户启动位置:
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 帐户设置中配置的主目录。
按物理目录配置用户隔离设置
仅按物理目录隔离用户时,所有 FTP 用户会话将限制为与 FTP 用户帐户同名的物理目录。 但是,创建的所有全局虚拟目录适用于所有用户。
- 在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
- 双击“FTP 用户隔离”图标打开 FTP 用户隔离功能。
- 显示“FTP 用户隔离”功能页后,选择“用户名物理目录(启用全局虚拟目录)”选项,然后单击“操作”窗格中的“应用”。
登录到 FTP 站点
现在可以使用用户隔离登录到 FTP 站点,但以下信息适用:
- 如果匿名登录到 FTP 站点,则会话将限制为在“先决条件”部分创建的“LocalUser\Public”文件夹。
- 如果你尝试使用管理员帐户登录到 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 用户帐户同名的物理或虚拟目录。 此外,将忽略创建的所有全局虚拟目录。 在此步骤中,你将为所有目录配置用户隔离,并为管理员用户添加虚拟目录。
在 IIS 管理器中单击创建的 FTP 站点对应的节点;这会显示所有 FTP 功能的图标。
双击“FTP 用户隔离”图标打开 FTP 用户隔离功能。
显示“FTP 用户隔离”功能页后,选择“用户名目录(禁用全局虚拟目录)”选项,然后单击“操作”窗格中的“应用”。
展开 FTP 站点的树节点,然后右键单击“LocalUser”文件夹并单击“添加虚拟目录”。
注意
在此示例中,“LocalUser”文件夹是物理目录,但也可以使用虚拟目录。
显示“添加虚拟目录”对话框后:
- 为“别名”输入“administrator”。
- 为“物理路径”输入
%SystemDrive%\inetpub\adminfiles
。 - 完成这些项,然后单击“确定”。
登录到 FTP 站点
现在可以使用用户隔离登录到 FTP 站点,但以下信息适用:
- 与步骤 3 中一样,如果匿名登录到 FTP 站点,则会话将限制为在“先决条件”部分创建的“LocalUser\Public”文件夹。
- 如果你使用管理员帐户登录到 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 站点根级别配置的所有虚拟目录。 必须在用户的物理或虚拟主目录路径下显式定义所有虚拟目录。