【问题标题】:IIS 7.5, ASP.NET, impersonation, and access to C:\Windows\TempIIS 7.5、ASP.NET、模拟和访问 C:\Windows\Temp
【发布时间】:2011-02-28 16:54:57
【问题描述】:

总结:我们的一个 Web 应用程序需要对 C:\Windows\Temp 的写入权限。但是,无论我如何削弱NTFS权限,procmon都会显示ACCESS DENIED

背景(可能与问题相关,也可能不相关):我们正在使用 OLEDB 访问 MS Access 数据库(位于 C:\外部窗口\临时)。不幸的是,这个 OLEDB 驱动程序需要对用户配置文件的 TEMP 目录(在 IIS 7.5 下运行时恰好是 C:\Windows\Temp)的写入权限,否则会引发可怕的“未指定错误”OleDbException。有关详细信息,请参阅KB 926939。我按照知识库文章中的步骤操作,但没有帮助。

详情

这是icacls C:\Windows\Temp 的输出。出于调试目的,我授予了Everyone 的完全权限。

C:\Windows\Temp NT AUTHORITY\SYSTEM:(OI)(CI)(F)
                CREATOR OWNER:(OI)(CI)(IO)(F)
                BUILTIN\IIS_IUSRS:(OI)(CI)(S,RD)
                BUILTIN\Users:(CI)(S,WD,AD,X)
                BUILTIN\Administrators:(OI)(CI)(F)
                Everyone:(OI)(CI)(F)

然而,这是procmon的截图:

Desired Access: Generic Read/Write, Delete
Disposition:    Create
Options:        Synchronous IO Non-Alert, Non-Directory File, Random Access, Delete On Close, Open No Recall
Attributes:     NT
ShareMode:      None
AllocationSize: 0
Impersonating:  MYDOMAIN\myuser

PS:当我以MYDOMAIN\myuser 登录时,我可以使用Windows 资源管理器在C:\Windows\Temp 中创建文件,没有任何问题。

编辑:web.config 的相关部分:

 <authentication mode="Windows" />
 <identity impersonate="true" />
 <authorization>
   <deny users="?" />
   <allow users="*" />
 </authorization>

身份验证似乎有效,即System.Security.Principal.WindowsIdentity.GetCurrent().Name(显示在我的自定义错误页面上)返回MYDOMAIN\myuser

【问题讨论】:

  • PS:我也考虑过将其发布到 serverfault,但我猜这是 ASP.NET 处理模拟的问题,而不是 Windows 配置问题。
  • Web.config 中的&lt;authorization ...&gt;&lt;identity ...&gt; 的值是什么,IIS 是否配置为允许匿名访问(不确定这是否仍然适用于 IIS7)?
  • @scherand:我已经更新了我的问题。 IIS7.5 似乎使用 .net 设置 w.r.t。匿名访问。
  • 嗯 - 这超出了我的范围,很抱歉打扰了您 :( 如果您想尝试并且尚未这样做,您可以通过 HttpContext.Current.User.Identity.NameSystem.Threading.Thread.CurrentPrincipal.Identity.Name 检查身份,如果您觉得喜欢阅读我发现了以下文章Breaking Changes for ASP.NET 2.0 applications running in Integrated mode on IIS 7.0,但我完全不确定这是否会有所帮助......
  • @scherand:没问题,感谢您的时间(和链接)!

标签: asp.net iis-7 windows-7 permissions impersonation


【解决方案1】:

您是否尝试过按照以下步骤操作: loadUserProfile and IIS 7 temporary directory failures

【讨论】:

  • 嗯,这正是我所做的(授予权限)。我什至授予全部权限。
  • 如果那是临时目录所在的位置,您确实没有将其设置为 loadUserProfile
  • @AndrewBarber:文章说:“答案很简单:关闭 loadUserProfile, ACL 临时目录以允许写入。 " 请注意“”。因此,根据文章,仅在临时目录上设置 ACL应该 解决问题,但事实并非如此。但是,是的,使用 loadUserProfile 的解决方法很有用,所以对答案 +1(还没有“接受的答案”,因为它没有回答原始问题 - “为什么对 C:\Windows\Temp 的写访问甚至不起作用尽管已授予完整权限”)。 :-)
  • 同意@Heinzi ...虽然这里没有回答原来的问题,但确实解决了问题,所以+1。
猜你喜欢
  • 2017-01-27
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2018-11-16
相关资源
最近更新 更多