2010-06-07 46 views
7

Resumen: una de nuestras aplicaciones web requiere acceso de escritura a C:\Windows\Temp. Sin embargo, no importa cuánto debilite el permiso NTFS, procmon muestra ACCESS DENIED.IIS 7.5, ASP.NET, suplantación y acceso a C: Windows Temp

Antecedentes (que podría o no ser relevante para el problema): Estamos utilizando OLEDB para acceder a una base de datos MS Access (que se encuentra fuera de de C: \ Windows \ Temp). Desafortunadamente, este controlador OLEDB requiere acceso de escritura al directorio TEMP del perfil de usuario (que resulta ser C: \ Windows \ Temp cuando se ejecuta bajo IIS 7.5), de lo contrario, se lanza el temido "Error no especificado" OleDbException. Vea KB 926939 para más detalles. Seguí los pasos en el artículo de KB, pero no ayuda.

detalles:

Ésta es la salida de icacls C:\Windows\Temp. Por motivos de depuración, concedí todos los permisos a 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) 

Sin embargo, esta es la captura de pantalla de procmon:

procmon screenshot

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: Cuando se haya identificado como MYDOMAIN\myuser, puedo crear archivos en C:\Windows\Temp el Explorador de Windows sin ningún problema.

EDITAR: Las partes pertinentes de web.config:

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

autenticación parece que funciona, es decir, System.Security.Principal.WindowsIdentity.GetCurrent().Name (que se muestra en mi página de error personalizada) devuelve MYDOMAIN\myuser.

+0

PS: También consideré publicar esto a ServerFault lugar, pero mi conjetura sería que este es un problema con la forma en ASP.NET se encarga de suplantación de Windows en lugar de una problema de configuración. – Heinzi

+0

¿Cuáles son los valores para '' y '' en 'Web.config' y está configurado para permitir el acceso anónimo (no estoy seguro si esto todavía es aplicable en IIS7)? – scherand

+0

@scherand: He actualizado mi pregunta. IIS7.5 parece usar la configuración .net w.r.t. acceso anónimo – Heinzi

Respuesta

3

Ha intentado seguir los pasos de esta: loadUserProfile and IIS 7 temporary directory failures

+0

Bueno, eso es exactamente lo que hice (otorgar permisos). Incluso fui tan lejos como para otorgar * permisos * completos. – Heinzi

+0

Si es allí donde está el directorio temporal, no lo configuró * loadUserProfile –

+0

@AndrewBarber: el artículo dice: "* La respuesta es bastante directa: apague loadUserProfile, ** o ** ACL el directorio temporal para permitir escribe. * "Tenga en cuenta" * o * ". Por lo tanto, de acuerdo con el artículo, simplemente establecer las ACL en el directorio temporal * debería * arreglar el problema, pero no es así. Pero sí, la solución temporal que usa loadUserProfile es útil, así que +1 a la respuesta (sin "respuesta aceptada", dado que no responde a la pregunta original: "¿por qué el acceso de escritura a C: \ Windows \ Temp no funciona? aunque se otorgan permisos completos "). :-) – Heinzi

Cuestiones relacionadas