problemas al leer permisos de carpeta con una aplicacion asp.net

09/09/2008 - 13:34 por Ander Jimenez | Informe spam
buenas.

tengo una aplicacion web en asp.net que lee los permisos de una carpeta que
le pasas y te muestra los usuarios y sus permisos. las carpetas que le paso
estan en un servidor.

si ejecuto la aplicacion en local no me da ningun tipo de problemas, pero
cuando la subo a un servidor (diferente que el de donde estan las carpetas)
me da un error: Attempted to perform an unauthorized operation. en el
momento que hace File.GetAccessControl(ruta, AccessControlSections.Access)
pero lo curioso es que ejecuto la misma funcion en ese mismo servidor pero
con una aplicacion de escritorio y si que funciona, y si voy desde el
servidor al otro servidor fisicamente y doy boton derecho propiedades puedo
ver tambien los permisos.

la unica forma que me deja leerlos una vez publicado en el servidor es si
pongo a la carpeta el usuario "EVERYONE" y le doy permisos de leer los
permisos (tambien me deja con el grupo USERS), pero eso no me sirve .

el caso es que por que con una aplicacion de escritorio me deja y con una
web no? y por que desde el local me funciona bien la aplicacion web y desde
el servidor no?

si alguien sabe algo lo agradeceria.

gracias por adelantado y un saludo!
 

Leer las respuestas

#1 Matias Iacono
09/09/2008 - 16:09 | Informe spam
El problema esta, justamente, que no tienes permisos para ejecutar la accion
en el servidor.

Esto se debe a que, normalmente, ASP usa el usuario IUSR_NombreDeMaquina, o
mejor dicho, el usuario anonimo de internet para acceder a los recursos del
servidor. Por ende, si este usuario no tiene permisos para hacer lo que
pretendes, obtendras este tipo de errores.

La diferencia de una aplicacion de Windows esta en que esta usa los permisos
con los cuales el usuario se ha logueado al equipo, entonces, este usuario
tiene permisos para acceder a la carpeta y demas.

En el caso de que te funciona de manera local, es que, generalmente, sucede
lo mismo que con la aplicacion Windows. O sea, esta usando tu usuario para
ejecutar la pagina ASP.

Ahora, la solucion posible es "impersonar" el usuario usado por ASP.
Buscando un poco encontre algunos ejemplos que pueden ser utiles:

http://www.iisfaq.com/Default.aspx?tabid)47
http://support.microsoft.com/kb/248187

Esto, tratando de no dar permisos totales al usuario anonimo, u obligar al
usuario a loguearse como usuario del dominio desde la pagina.

Saludos.

Matías Iacono
Microsoft MVP
Orador Regional INETA
http://www.preguntaalexperto.net
http://mvpfiles.spaces.live.com


"Ander Jimenez" wrote:

buenas.

tengo una aplicacion web en asp.net que lee los permisos de una carpeta que
le pasas y te muestra los usuarios y sus permisos. las carpetas que le paso
estan en un servidor.

si ejecuto la aplicacion en local no me da ningun tipo de problemas, pero
cuando la subo a un servidor (diferente que el de donde estan las carpetas)
me da un error: Attempted to perform an unauthorized operation. en el
momento que hace File.GetAccessControl(ruta, AccessControlSections.Access)
pero lo curioso es que ejecuto la misma funcion en ese mismo servidor pero
con una aplicacion de escritorio y si que funciona, y si voy desde el
servidor al otro servidor fisicamente y doy boton derecho propiedades puedo
ver tambien los permisos.

la unica forma que me deja leerlos una vez publicado en el servidor es si
pongo a la carpeta el usuario "EVERYONE" y le doy permisos de leer los
permisos (tambien me deja con el grupo USERS), pero eso no me sirve .

el caso es que por que con una aplicacion de escritorio me deja y con una
web no? y por que desde el local me funciona bien la aplicacion web y desde
el servidor no?

si alguien sabe algo lo agradeceria.

gracias por adelantado y un saludo!




Preguntas similares