FTP 授权规则不会在 IIS 中的 FTP 站点中使用用户隔离设置继承

本文可帮助你解决以下问题:如果在站点级别配置 FTP 用户隔离,则 FTP 授权规则不会通过用户隔离设置继承。

原始产品版本: Internet Information Services 7.5
原始 KB 数: 4294477

现象

在 Microsoft Internet Information Services (IIS),如果在站点级别将 FTP 用户隔离配置为 用户名物理目录(启用全局虚拟目录),则 FTP 授权规则不遵循应用程序的物理路径,并且不会根据文件夹结构继承。

假设 IIS FTP 站点的用户隔离设置为 用户名物理目录(启用全局虚拟目录),并在 FTP 授权功能中向所有用户授予读取权限。 创建\FTP\Localuser\<user_name>\名为“上传”的文件夹,并通过 IIS 中此上传文件夹的 FTP 授权功能向所有用户授予读取和写入访问权限。 尽管对“上传”文件夹具有写入权限,但当用户名与路径中的user_name>文件夹匹配<的用户尝试在“上传”文件夹中上传文件时,用户会收到 Access 被拒绝的错误消息。

尝试通过 Windows 中包含的命令行 FTP 实用工具上传 FTP 文件的输出如下所示:

ftp> cd upload  
250 CWD command successful.  
ftp> put c:\file_name.txt  
200 EPRT command successful.  
550-Access is denied.  
Win32 error: Access is denied.  
Error details: Authorization rules denied the access.  
550 End

原因

此为有意行为。 FTP 用户隔离 用户名物理目录(启用全局虚拟目录) 设置可确保与旧版 IIS 6 功能向后兼容。

解决方法

若要获取所需行为,请使用用户隔离文件夹之外的另一个文件夹,然后在该文件夹上设置所需的 FTP 授权规则。 对于使用 用户名物理目录(启用全局虚拟目录) 隔离的 FTP/Upload FTP 站点,请使用路径而不是 FTP/LocalUser/<user_name>/Upload 设置 FTP 授权规则。 目录分析程序将忽略路径 FTP/LocalUser/<user_name>/Upload 的一部分,因为这用于隔离查找。 因此,仅当在用户隔离文件夹外部的路径(例如 FTP/Upload 示例路径)上定义授权规则时,该行为才按预期工作。 通过这种方式,授权适用于所有用户的 “上传 ”文件夹。

下面是 ApplicationHost.config 文件中的示例授权规则

<location path="FTP/Upload">
    <system.ftpServer>
        <security>
            <authorization>
                <remove users="*" roles="" permissions="Read" />
                <add accessType="Allow" users="*" permissions="Read, Write" />
            </authorization>
        </security>
    </system.ftpServer>
</location>

尝试将文档上传到具有此配置的 FTP 站点时,Windows 中的 FTP 命令提示符实用工具的输出如下所示:

ftp> cd upload  
250 CWD command successful.  
ftp> put c:\file_name.txt  
200 EPRT command successful.  
125 Data connection already open; Transfer starting.  
226 Transfer complete.  
ftp: 14 bytes sent in 0.00Seconds 14000.00Kbytes/sec.

用户隔离 用户名物理目录(启用全局虚拟目录) 设置继承自 IIS 6,并且不遵循正确的文件夹结构。 IIS 7 及更高版本中存在另一种隔离模式 (用户名目录(禁用全局虚拟目录),此配置遵循授权规则。