概述: 我们的一个Web应用程序需要对
这是
C:\Windows\Temp
进行写入访问。然而,无论我如何弱化NTFS权限,procmon 都显示 ACCESS DENIED
。
背景(可能与问题相关或不相关):我们正在使用OLEDB访问位于C:\Windows\Temp之外的MS Access数据库。不幸的是,这个OLEDB驱动程序需要对用户配置文件的TEMP目录进行写访问(当在IIS 7.5下运行时,这个目录恰好是C:\Windows\Temp),否则将抛出可怕的“未指定错误”OleDbException。有关详细信息,请参见KB 926939。我按照KB文章中的步骤操作,但没有帮助。
详情:这是
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
。
Web.config
文件中<authorization ...>
和<identity ...>
的值是什么?IIS 是否配置为允许匿名访问(不确定在 IIS7 中是否适用)? - scherand