Aquí hay un problema con IIS 7.5 y ASP.NET que he estado investigando y con el que no llegué a ninguna parte. Cualquier ayuda sería muy apreciada.
Mi pregunta es: usando ASP.NET en IIS 7.5, ¿cómo permite IIS y / o el sistema operativo que la aplicación web escriba en una carpeta como C:\dump
cuando se ejecuta con plena confianza? ¿Cómo es que no tengo que agregar explícitamente acceso de escritura para el usuario del grupo de aplicaciones (en este caso ApplicationPoolIdentity
)?
Esto lo sé:
- En IIS 7.5, la identidad predeterminada para un grupo de aplicaciones es
ApplicationPoolIdentity
. ApplicationPoolIdentity
representa una cuenta de usuario de Windows llamada "IIS APPPOOL \ AppPoolName", que se crea cuando se crea el grupo de aplicaciones, donde AppPoolName es el nombre del grupo de aplicaciones.- El usuario "IIS APPPOOL \ AppPoolName" es, por defecto, un miembro del
IIS_IUSRS
grupo. - Si está ejecutando bajo Plena confianza, su aplicación web puede escribir en muchas áreas del sistema de archivos (con exclusión de carpetas como
C:\Users
,C:\Windows
, etc.). Por ejemplo, la aplicación tendrá acceso a escritura en algunas carpetas, como,C:\dump
. - De forma predeterminada, el
IIS_IUSRS
grupo no tiene acceso de lectura o escrituraC:\dump
(al menos no acceso visible a través de la pestaña "Seguridad" en el Explorador de Windows). - Si niega el acceso de escritura
IIS_IUSRS
, obtendrá una SecurityException cuando intente escribir en la carpeta (como se esperaba).
Entonces, teniendo todo eso en cuenta, ¿cómo se otorga acceso de escritura al usuario "IIS APPPOOL \ AppPoolName"? El proceso w3wp.exe se ejecuta como este usuario, entonces, ¿qué le permite a este usuario escribir en una carpeta a la que no parece tener acceso explícito?
Tenga en cuenta que entiendo que esto probablemente se hizo por conveniencia, ya que sería difícil otorgarle a un usuario acceso a cada carpeta en la que necesita escribir si se está ejecutando con Full Trust. Si desea limitar este acceso, siempre puede ejecutar la aplicación en Confianza media. Estoy interesado en conocer la forma en que el sistema operativo y / o IIS permite que estas escrituras se lleven a cabo, aunque parece que no hay acceso explícito al sistema de archivos otorgado.
Haga clic derecho en la carpeta.
Haga clic en Propiedades
Haga clic en la pestaña Seguridad. Verás algo como esto:
Marque / desmarque cualquier acceso que necesite otorgar a la cuenta
Haga clic en el botón Aplicar y luego en Aceptar.
fuente
Cada grupo de aplicaciones en IIs crea su propia carpeta de usuario segura con permiso de lectura / escritura COMPLETO de forma predeterminada en c: \ users. Abra la carpeta Usuarios y vea qué carpetas del grupo de aplicaciones hay, haga clic derecho y verifique sus derechos para la cuenta virtual del grupo de aplicaciones asignada. Debería ver su cuenta de grupo de aplicaciones agregada ya con acceso de lectura / escritura asignado a su raíz y subcarpetas.
De modo que ese tipo de acceso al almacenamiento de archivos se realiza automáticamente y debería poder escribir lo que quiera en las carpetas de la cuenta de usuario de los grupos de aplicaciones sin cambiar nada. Es por eso que se crearon cuentas de usuario virtuales para cada grupo de aplicaciones.
fuente
Intenté esto para solucionar problemas de acceso a un sitio web de IIS, que se manifestó como algo similar a lo siguiente en los registros de eventos → Windows → Aplicación:
Al final tuve que darle al
Everyone
grupo de Windows acceso de lectura a esa carpeta para que funcione correctamente.fuente