¿Cómo es que cuando agrego el acceso IIS_IUSRS RW a una carpeta, no permite automáticamente el acceso ISUR RW?

11

Estoy usando IIS7 (Windows Server 2008 x64) y tengo una configuración de sitio web usando autenticación anónima. La identidad de usuario anon se configura como IUSR. La aplicación escribe archivos en una carpeta y le estoy dando los permisos RW del grupo IIS_IUSRS a la carpeta. Esto no funciona Debo explícitamente dar permisos IUSR RW para permitir que la aplicación escriba en la carpeta.

Entiendo que la identidad del grupo de aplicaciones se agrega automáticamente al grupo IIS_IUSRS. Supuse que IUSR (o cualquier identidad de usuario anónima) también era un miembro implícito del grupo IIS_IUSRS. No parece que este sea el caso.

Mientras soluciono los problemas, utilizo Process Monitor para ver el acceso a la carpeta y determiné que el Servicio de red (la identidad del grupo de aplicaciones) está suplantando a IUSR (esto es lo que esperaba) pero dando permisos RW al grupo IIS_IUSRS no permitió que IUSR acceda a la carpeta Acceso al archivo denegado).

¿Alguien puede explicar si IUSR es o no miembro del grupo IIS_IUSRS?

Revisé la siguiente documentación y no encontré una respuesta sólida:

Comprender las cuentas integradas de usuarios y grupos en IIS 7

Identidades del grupo de aplicaciones

Izzy
fuente

Respuestas:

14

Eso es porque estas son dos cosas diferentes. IIS_IUSRS es el grupo para las cuentas de proceso de trabajo de IIS . Esto significa la identidad con la que se ejecuta el grupo de aplicaciones. IUSR es la identidad anónima del usuario. Eso significa la identidad que IIS cree que es el usuario que accede al sitio.

Ahora, a pesar de que no lo dijiste, déjame adivinar: ¿esta aplicación es asp clásica? (De lo contrario, si es .Net, entonces debe estar utilizando la suplantación). De cualquier manera, lo que sucede es que se accede a los recursos como la identidad suplantada, es decir, el usuario anónimo en su caso, es decir, IUSR. Es por eso que tienes que otorgarle los derechos. En .Net, si desactiva la suplantación, encontrará que IIS_IUSRS entrará en juego como esperaba. En ASP clásico (y para archivos estáticos), no tiene otra opción, la suplantación siempre está "habilitada"; entonces siempre se usa la identidad del usuario, no la identidad del grupo. Entonces, dado que IIS_IUSRS es para identidades de grupo, no está en juego.


Editar después de que OP agregó más información:

Es fácil confundir IUSR e IIS_IUSRS debido a sus nombres. Para ver que son diferentes es recordar que IIS_IUSRS es un reemplazo para IIS_WPG en IIS6, que era el Grupo de Procesos de Trabajadores. A estos grupos agrega cuentas bajo las cuales desea ejecutar sus grupos, no identidades anónimas, se supone que los privilegios anonimos son más limitados. p.ej. a veces es posible que desee utilizar una cuenta de dominio para ejecutar el grupo para la delegación de Kerberos a otros recursos de red. Luego agregaría esa cuenta de servicio a este grupo.

Cuando se habilita la suplantación, el grupo / proceso finge ser el usuario porque se lo dijeron. En caso de anon auth (su caso), ese usuario es IUSR. En caso de autenticación de Windows, sería la identidad de Windows \ Domain del usuario. Esta es también la razón por la que obtiene un rendimiento exitoso con la suplantación, porque el proceso tiene que cambiar a una identidad diferente para acceder a los recursos.

Si está utilizando .NET y autenticación anónima, entonces no veo por qué habilitaría la suplantación. En caso de que no esté utilizando o no necesite suplantación, debe tener en cuenta algunos trucos más en el caso de IIS7: puede hacer que su IUSR desaparezca por completo y poner fin a toda confusión. Creo que te gustaría, y es mi método preferido también. Todo lo que tiene que hacer es decirle que reutilice la identidad del grupo como identidad anónima .

Entonces, después de esto, solo tendrá que tratar con el grupo IIS_IUSRS. Pero no se confunda, ¡esto todavía no significa que estos dos sean iguales! ¡Es posible que la identidad del proceso sustituya a IUSR, pero no al revés!

Algunos trucos más de IIS7 a tener en cuenta: si mira IIS_IUSRS, puede estar vacío. Esto se debe a que las identidades de su grupo virtual se agregan automáticamente cuando comienza el grupo, por lo que no tiene que preocuparse por estas cosas.

Esta tabla debería ayudar a aclarar mejor cómo se determina la identidad de ejecución del subproceso:

Suplantación de recursos de acceso anónimo accedido como

Habilitado Habilitado IUSR_computer en IIS5 / 6 o,
                                       IUSR en IIS7 o,
                                       Si cambió la cuenta de usuario anon 
                                       en IIS, lo que sea que establezca allí
Habilitado Deshabilitado MYDOM \ MyName
Disabled Enabled NT Authority \ Network Service (identidad de grupo)
Disabled Disabled NT Authority \ Network Service (identidad de grupo)

Amit Naidu
fuente
Definitivamente estamos usando .Net (3.5 dirigido) pero puede estar usando suplantación. Tendré que consultar con mis desarrolladores para estar seguro. Mi confusión surge del hecho de que asumí (incorrectamente parece) que la identidad del usuario anónimo era automáticamente miembro del grupo IIS_IUSRS. Como no lo está, permíteme aclarar y corregirme si estoy trabajando.
1) Usando ASP clásico, los permisos de acceso a archivos usan la identidad de usuario anónimo. En IIS 7 o posterior, este usuario no es miembro del grupo IIS_IUSRS de forma predeterminada. 2) Al usar ASP.Net, los permisos de acceso a archivos usan la identidad de usuario anónimo si la suplantación está habilitada. En IIS 7 o posterior, este usuario no es miembro del grupo IIS_IUSRS de forma predeterminada. 3) Al usar ASP.Net, los permisos de acceso a archivos usan la identidad del proceso de trabajo si la suplantación está deshabilitada. En IIS 7 o posterior, este usuario siempre es miembro del grupo IIS_IUSRS de forma predeterminada.
Sí, absolutamente correcto en todos los puntos! Para ser perfectamente claro, en el n. ° 1 y n. ° 2 debe agregar "si IIS anon auth está habilitado", que no tuve que incluir antes porque ya dijo que está usando anon. Vea la tabla que agregué para explicar mejor esto.
Amit Naidu
Muchas gracias por aclarar esto. Está de acuerdo con lo que he encontrado a través de prueba y error, pero no lo he visto documentado muy claramente en ninguna parte. Es fundamental para los administradores que emplean LUA en sus servidores al configurar aplicaciones IIS que necesitan permiso de escritura.