对虚拟目录设置权限

出于安全原因,后台智能传输服务 (BITS) 不会将文件上传到启用了脚本和执行权限的虚拟目录。 如果将文件上传到启用了这些权限的虚拟目录,作业将失败并显示错误代码BG_E_SERVER_EXECUTE_ENABLED。

BITS 不需要启用虚拟目录写入,因此建议关闭对虚拟目录的写访问权限。

经过身份验证的用户 (或 IIS 匿名用户进行匿名身份验证) 必须对虚拟目录映射到的物理目录具有更改权限;授予写入权限是不够的。

指定通知的权限

为虚拟目录和通知 URL 指定的身份验证方案 (看到 BITSServerNotificationURL 属性) 必须兼容。 BITS 使用为虚拟目录指定的身份验证方案来访问通知 URL。 如果 BITS 由于身份验证失败而无法访问通知 URL,则上传作业将失败。

如果通知类型 (看到 BITSServerNotificationType 属性) 是按引用的,则应用程序必须确保用户有权访问引用的文件, (看到 BITS-Request-DataFile-Name 标头) 。 BITS 将引用文件上的 ACL 设置为虚拟目录映射到的物理目录的 ACL。

注意

即使通知 URL 由与物理上传目录不同的计算机上的 Web 服务器提供服务,通知应用程序也必须能够映射和访问远程文件。 BITS-Request-DataFile-Name 标头始终包含相对于托管 BITS 扩展组件的计算机的路径规范。 在另一台计算机上运行的应用程序可能需要在访问之前将路径转换为 UNC 路径。

 

BITS 支持多种身份验证方案组合。 但是,应对虚拟目录和匹配的通知 URL 使用以下身份验证方案。

  • 若要通过引用通知提供支持,应将虚拟目录配置为使用 NTLM (协商) 身份验证(如果物理上传目录 (虚拟目录指向的目录) 使用匿名身份验证方案)。 如果物理上传目录允许匿名请求 (无身份验证) ,则虚拟目录应启用匿名 (无身份验证) 。

    必须设置物理上传目录中的 ACL,以便经过身份验证的用户可以在通知 URL 指向的目录中读取文件。 BITS 使用物理上传目录的 ACL 设置临时上传文件的 ACL, (BITS-Request-DataFile-Name 标头包含临时文件) 的路径。

  • 由于值通知不需要通知应用程序访问包含上传内容的临时文件,因此身份验证方案可以是匿名的,也可以协商 (NTLM) 。 唯一的要求是,虚拟目录的经过身份验证的用户还必须获得访问通知 URL 的授权。

指定远程共享的权限

虚拟目录可以指向不同计算机或网络共享上的映射驱动器。 如果指向映射的网络驱动器,用于映射驱动器的凭据应对远程共享具有完全控制。

如果虚拟目录指向网络共享,则 BITS 使用虚拟目录的连接作为用户凭据访问远程共享。 若要访问远程共享,连接 As 帐户需要具有权限,如 LogonUser 函数文档中所述。 使用LOGON32_LOGON_BATCH或LOGON32_LOGON_INTERACTIVE登录类型的 BITS 日志。 连接 因为用户帐户需要Full-Access远程共享的权限;授予写入权限是不够的。

将物理上传目录映射到网络共享时,请求通知 URL 的调用方标识是连接作为用户,或者物理上传目录的经过身份验证的用户 (仅在 IIS 6.0 及更高版本中可用时,当在验证对网络资源的访问权限时,复选框始终使用经过身份验证的用户凭据时连接“作为”对话框) 。