Iver's web place

Life is a journey ... taken one shot at a time!

Windows

  • Lidiando con los permisos de Windows 2003

    Recientemente en el trabajo he tenido que configurar un directorio virtual para el sistemita que estamos desarrollando, sin embargo me ha dado mucha lata la configuracion de los permisos para que no me diera el gracioso error de:
    usuario ASPNET no tiene permisos sobre el directorio "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"
    En un principio no me preocupo y fui a darle permisos al usuario en el mencionado directorio, sin embargo cuando caducan los permisos del directorio (no me pregunten cada cuando sucede porque no se) resulta que el directorio, una vez mas es inaccesible para el usuario. Entonces LF me menciona que podemos darle permisos mediante un comando del framework de .NET que da permisos sobre la metabase de IIS[1] y al hacerlo le da permisos al usuario aspnet para poderlo configurar. Asi que lo probe, ejecute el comando en la consola:
    C:\WINNT\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis –ga ASPNET
    Pero nada, resulta que ese lo aplicabamos en el windows XP y si funcionaba (aunque claro que por poco tiempo), busque informacion sobre permisos de windows y la cuenta de ASPNET hasta que llegue a la respuesta de mis problemas. En un principio se me hizo algo compleja, pero despues de todo suena logico, habia que darle permisos en el archivo de configuracion del machin.config editando lo siguiente:
    <processmodel username="machine" password="AutoGenerate"></processmodel>
     
    El userName y los atributos password controlan la identidad del proceso y los anteriores son los predeterminados. En un principio le cambie el password al usuario (que en el 2003 es el NETWORK SERVICE ) y lo agregue en el machin.config de la siguiente manera:
    <processmodel username="NETWORK SERVICE" password="pass123"></processmodel>
     
    Pero aun asi seguia con el conflicto asi que decidi ponerlo como sugieren en la ayuda de microsoft[2] :
    <processmodel username="SYSTEM" password="AutoGenerate"></processmodel>
     
    Con eso me basto para que dejaran de dar problemas los permisos del sistema, que por cierto se me hacen muy poco intuitivos y faltos de documentacion. Que diferencia con linux, tan solo un simple:

    Angy:~/ chmod -R 755 /mi/directorio
    Angy:~/ chown -R www-data /mi/directorio
    y listoooo!! los permisos se han asignado. No es que windows no tenga facilidad en muchas cosas, sino que en particular en este tipo de cuestiones no es nada amigable. Hoy actualice y reconfigure mi sistema en tan solo un par de horas, tambien configure mi apache con php5 y ahi no se quejo para nada, no se si sea porque ya lo he hecho muchas veces o en definitiva esta mas documentado y es mas intuitivo (claro al estilo de unix tongue.png ).
    Para mas informacion creo que seria bueno darse una paseada por el portal del msdn de microsoft[3] y aprender a ver los logs de errores de windows.
    Espero esto le sirva a alguien mas porque la verdad es que uno pierde muuucho tiempo en este tipo de cosas.
    [1] http://support.microsoft.com/?kbid=267904
    [2] http://support.microsoft.com/kb/317012/
    [3] http://support.microsoft.com/kb/324383
  • Instalar el IIS en windows home edition

    Recientemente compre una portatil que venia con el sistema operativo de microsoft en su version Home Edition y por cuestiones laborales tenia que instalarle el iis (prefiero apache pero iis me hace ganar mas dinero). Para esto dije, de seguro se puede instalar y el senior google debe de saberlo, asi que buscando un poco encontre los siguientes pasos que pretendo dejarlos posteados para cuando requiera hacerlo de nuevo en mi maquinita.
    1. Primero se localiza y edita el archivo: C:\WINDOWS\INF\SYSOC.INF.
    2. En la seccion que dice [Components] se encuentra la siguiente linea:
    iis=iis.dll,OcEntry,iis.inf,hide,7
    1. Ahora se cambia esa linea por lo siguiente: iis=iis2.dll,OcEntry,iis2.inf,,7
    2. Desde un disco que tenga una version profesional o de servidor se copia los siguientes archivos a un directorio en el disco duro: iis.dl_ y iis.in_
    3. Una vez ahi se generan los archivos que seran usados para la instalacion, asi que desde la consola se ejecuta el siguiente comando: expand iis.dl_ iis2.dll y expand iis.in_ iis2.inf
    4. Se copia el archivo iis2.dll a c:\windows\system32\setup\ y el archivo iis2.inf a c:\windows\inf\
    5. Con lo anterior ya se puede instalar desde agregar programas y componentes de windows el iis y solo se requiere darle al ubicacion de un par de archivos desde el disco de instalacion.
    Despues de todo este rollo lo normal seria teclear en la barra de direcciones del navegador http://localhost/ y en ese momento ver que el servidor este instalado. Sin embargo .. que crees? que no es cierto, en mi caso me dio un error de que un modulo no se puede cargar o no se que ondas, para esto lo solucione buscando nuevamente en google (ese google quiere dominar al mundo).
    Existen dos razones por las que no queria funcionar el servidor, una es porque estaba seleccionada la opcion que le dice al iis que controle las contrasenias dentro del administrador de la pc en la pestania de seguridad del directorio y la otra porque en el registro de windows en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{A9E69610-B80D-11D0-B9B9-00A0C922E750} se tiene que renombrar los valores de AccessPermission a AccessPermission0
    y de LaunchPermission a LaunchPermission0. Otra opcion tambien es desde
    Start/Settings/Control Panel/Admin Tools/Component Services explorar en Component Services/Computers/My Computer/DCOM Config/IIS Admin Service y desde la vista detallada buscar el numero del servicio de iis A9E69610-B80D-11D0-B9B9-00A0C922E750. En mi caso se pudo realizar la operacion desde el component services pero en el caso de un companiero de trabajo tuvo que ser desde el registro.
    Y luego dicen que porque prefiero Linux ... sharros, no hay como un apt-get install apache php5 y listooo!!! las configuraciones las realizas para asegurar el server y no para hecharlo a andar.