本文可帮助你解决以下问题:如果在站点级别配置 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 及更高版本中存在另一种隔离模式 (用户名目录(禁用全局虚拟目录),此配置遵循授权规则。