Recuperando configuraciones de Windows desde backups de regedit

Una de estas entradas que uno no querría escribir porque significa que nos ha fallado un sistema de copia de seguridad de sistema operativo y nos toca recuperar configuraciones. En fin al tema.

El cliente SSH Putty y muchos otras apps guardan su configuración sólo en claves de registro. En nuestro caso necesitábamos recuperar la configuración de un alto número de conexiones SSH en un Windows recién instalado. Disponíamos de copia no operativa del sistema anterior por lo que necesitábamos abrir “el antiguo” regedit para recuperar éstas configuraciones.

Para hacerlo, en nuestro caso desde (el nuevo) sistema bajo Windows 7 y con el antiguo sistema montado en otro disco o directorio:

  • asegurarse de tener visibles archivos ocultos y los “protegidos” del sistema
  • dentro de regedit nos colocaremos sobre el árbol de HKEY_LOCAL_MACHINE o el HKEY_USERS. En realidad en cualquiera que nos permita la opción ” Cargar subarbol” en el menú archivo
  • Cargaremos un subarbol desde un archivo que contenga la parte del registro de Windows anterior que nos interese. Deberás buscar la ubicación según tu sistema pero a modo de referencia:
    • las confs de usuario (nuestro caso) residen en un archivo en el raiz de la carpeta principal de usuario… que suele ser “C:/Usuarios/XXXXX”. El archivo se llama “Ntuser.dat” y es donde residen la mayoría de confs específicas de aplicaciones de ese usuario.
    • los del sistema residen dentro de la carpeta de Windows en el subdirector /system32/config cada uno con su nombre, según lo que quieras recuperar.
  • una vez cargado nos pedirá un nombre, es el nombre que visualizaremos mientras tengamos “abierto” esa parte del árbol en el registro actual. No es importante, después lo desmontaremos.
  • ahora deberías ver tu nuevo árbol con el nombre que hayas indicado, puedes ir buscando aquellos elementos que quieras recuperar y exportarlos a archivos individuales… putty.conf en nuestro caso.
  • una vez hayas terminado recuerda descargar el subarbol temporal desde la opción del menú archivo.
  • para importarlos en el nuevo sistema o maquina necesitarás rectificar a mano con un editor de textos el archivo exportado para adecuar las claves a donde quieres que se importen ahora. En nuestro caso sustituimos:
[HKEY_USERS\temp_antiguo_sistema\Software\SimonTatham\PuTTY\Pageant]
por
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Pageant]

Divertido… Windows y sus “amables” sistemas!

 


Actualización:

Lista de referencias de interés para recuperar algunas configuraciones por el mismo método:

  • Dreamweaver, la configuración de sitios no está en la entrada de Dreamweaver en Software sino en la de commón, conocretamente en: HKEY_CURRENT_USER\Software\Adobe\Common\XX\Sites

 

Trabajando con virtualenvs y PyCharm bajo windows

Cada vez realizamos más desarrollos bajo Python y como parte del mismo ya se han hecho casi indispensables los “virtualenvs” que permiten aislar versions de python, paquetes, etc en función del proyecto. Es algo así como un “chroot” del entorno de Python para una aplicación.

Hacerlo bajo entornos Windows, como no, es un poco más complejo y menos fiable, pero se complica aún más al usarlo bajo PyCharm de Jetbrains (con versión Open Source disponible) que los gestiona desde la misma aplicación. Algunos consejos para hacerlo funcionar que nos han resultado útiles:

  • No muevas el envvar de los entornos. Por defecto en Windows los virtualenvs se instalan en la carpeta del usuario, generalmente C:\USUARIO\Envs. Parece que el terminal y otras funciones de PyCharm, no se llevan muy bien con otras ubicaciones, que podrías cambiar con una variable de entorno en Windows (recuerda recargarlas o reiniciar para que se apliquen) de tipo WORKON_HOME.
  • No olvides activar el entorno cuando uses el terminal, también desde dentro del PyCharm, aunque el proyecto esté en ese entorno recuerda que no lo activa por defecto.

En otro orden de cosas, si necesitas renombrar proyectos, prueba siguiendo estos pasos:

  1. cierra el proyecto en la aplicación
  2. renombra el directorio del proyecto
  3. entra en la carpeta .idea que lo contiene y renombra el archivo con el nombre antiguo y extensión .iml
  4. abre el archivo .name y cambia el nombre en su contenido

Instalar Virtualbox guest-additions sin X

Entre otros muchos usos de Virtualbox, lo usamos como entorno de desarrollo que sean replicas de los de producción y que nos sirven para desarrollo offline para desarrolladores. Con el tiempo hemos ido optimizándolas de modo que mantenemos los archivos y repositorios, configuraciones, logs, etc en carpetas “locales” del host que se montan y sirven desde la maquina virtual. Es una estupenda alternativa a usos de cualquier versión de xAMP ya sea en Windows o Mac sobretodo porque emula a la perfección el entorno real de desarrollo, nos permite usar los mismos archivos de configuración de servidores, formato de rutas, etc. En otro post entraremos en detalles, pero lo configuramos con dos interfaces de red, una poder referirnos a ellos siempre en la misma dirección local y otro para enrutar el tráfico de salida.

Virtualbox requiere* (el asterisco es porque en realidad no pero hay servicios vitales como el de hora que de otro modo no funcionan bien) instalar unas “guest-additions” especificas del entorno virtualizado. El problema surge de que muchas distribuciones (como Debían en nuestro caso) incluyen una versión de las mismas que generalmente suelen estar obsoletas respecto a las que podemos instalar desde la última versión de Virtualbox y pero,  acaban interfiriendo en su correcto funcionamiento si se instalan por duplicado.

No entraremos en detalles de como hacerlo, al haber numerosos post al respecto pero por nuestra experiencia recomendamos:

  • no instalar las versiones de los repositorios de Debian (o seguramente ninguna distribución)
  • si ya lo has hecho desintalalas… apt-get remove vbox-additions***. Las instaladas desde el CD se pueden desinstalar con el mismo instalador (ver comentario posterior) con “sh ./VBoxLinuxAdditions.run uninstall”
  • en nuestro caso nos molestamos ademas en hacer un “blacklist” a esos paquetes para evitar que se instalen por error:
echo "virtualbox-guest-utils hold" | dpkg --set-selections 
echo "virtualbox-guest-x11 hold" | dpkg --set-selections 
echo "virtualbox-guest-dkms hold" | dpkg --set-selections
  • una vez eliminados desde el menu de la maquina en VirtualBox “Insert Guest Additions”
  • montar el cdrom si fuera necesario. Según el entorno “mount /dev/cdrom /mnt/cdrom”
  • antes de instalar tal vez tengas que comprobar e instalar algunos paquetes (DKMS, etc). Puedes ver info por distribución en https://www.virtualbox.org/manual/ch04.html#idp55231856

Como nuestras VMs son servidores que procuramos sean los más compactos posibles para distribución y carga en la maquina que los ejecuta, no nos convencía que las guest-additions instalar numerosas librerias para la X e investigando un poco averiguamos finalmente una opción poco documentada de usar un flag –nox11 al instalar. Así una vez en el directorio con los scripts del cdrom virtual ejecutar:

sh ./VBoxLinuxAdditions.run --nox11

Que debería terminar con el mensaje:

...Could not find the X.Org or XFree86 Window System, skipping.
 

tmp noexec en servidores virtuales

Febrero 19, 2013  |  linux, Presencia Online, Software

Ha sido una de estas pequeñas cosas en la administración de sistemas que nos ha traído de cabeza durante algún tiempo, así que nos ha parecido interesante documentarla en nuestro blog.

En Linux, es una máxima que dado que “/tmp” es un directorio con permisos de escritura muy flexibles (=inseguros) debería montarse siempre con el flags “nosuid,noexec” para impedir cambios de usuario y ejecución de binarios en ese directorio, práctica habitual de muchos exploits de PHP y otros lenguajes. En realidad los expertos dicen que no es en absoluto suficiente con eso, pero al menos es una primera práctica de “buenas costumbres” de seguridad.

El problema surge cuando algunas partes del sistema si que quieren ejecutar desde esas particiones. El caso más obvio es el de aptitude en Debian que al instalar ejecuta por ejemplo, scripts de configuración. Buscando la solución más habitual es la de hacer un remount de tmp para que durante “un rato” permita execs añadiendo un archivo a “/etc/apt/apt.conf.d/” con algo como:

DPkg::Pre-Invoke
{
 "mount -o remount,exec /tmp";
 "mount -o remount,exec /var/tmp";
};
DPkg::Post-Invoke
{
 "mount -o remount /tmp";
 "mount -o remount /var/tmp";
};

Bien, en sistemas virtualizados de contenedores Linux como los que usamos nosotros y en OpenVZ sobre Debian en particular, el sistema de particiones se complica un poco al realizarse desde la maquina host como scripts que se ejecutan durante el arranque de la maquina.  Hasta hace poco hacíamos lo que se conoce como un “bind” mount (algo así como un mount virtual de otra ruta) al /tmp de la maquina limitando esos permisos (noexec,nosuid) o en otros casos montando el /tmp en memoria creando una entrada tmpfs en el script de la maquina XXX.mount

El problema, en ambos casos, es que eso impide hacer remount una vez dentro de la maquina virtual, pues recibiremos un “Permission denied” al intentarlo dado que en realidad es el host quien monto la partición y esta “por encima” del ámbito del sistema virtual.

Para resolverlo hasta ahora hemos encontrado dos soluciones que estamos poniendo a prueba. La primera sirve si el /tmp lo estás montando a una partición en tmpfs (memoria) y consiste simplemente en crear la entrada dentro del /etc/fstab virtualizado (en los contenedores es normal que esté vacío pues su sistema de archivos se genera “fuera”), en este caso algo como :

tmpfs /tmp tmpfs noexec,nosuid 0 0

De este modo la solución anterior de remontarlo funciona correctamente y puede servir.

La segunda solución, que en realidad ya hemos implantado siempre pero que es necesaria cuando queremos seguir montando desde el host y/o a una unidad no desmontable es cambiar la ruta desde la que el apt crea esos temporales (ver http://wrightsolutions.wordpress.com/2010/01/11/securing-tmp-and-noexec-apt-considerations/).

APT
{
 ExtractTemplates
 {
 TempDir "/ruta/a/otro/tmp";
 };
};

Esa nueva ruta, como no tiene que existir y residir en alguna partición con permisos de ejecución. Esta es la solución que hemos implantando en nuestro caso en todas las maquinas.

 

 

Parcheando WPeMatico para soportar estilos

Septiembre 12, 2012  |  blog, Software

El plugin WPeMatico es un plugin de wordpress que habilita el creado de post automáticos desde un rss o feed. Uno de los inconvenientes que presenta al leer el rss es que filtra los atributos de las etiquetas html dejando el código html del post totalmente limpio. En caso de ser ese origen RSS de una fuente “segura” o conocida tal vez no quieras que se eliminen del todo las clases de las etiquetas, por ejemplo, para aplicar clases a las imágenes, captions, etc.

Lo hemos resuelto con un pequeño parche en el archivo de funciones haciendo usa de la configuración de SimplePie , la librería de parseo RSS que también incluye WordPress.

En el archivo functions.php del plugin, donde se crea el objeto y conexión a $feed, añadimos:

// alsur hack para que no elimine clases o estilos al importar
$feed->strip_attributes(array(‘bgsound’, ‘expr’, ‘id’,’onclick’, ‘onerror’, ‘onfinish’, ‘onmouseover’, ‘onmouseout’, ‘onfocus’, ‘onblur’, ‘lowsrc’, ‘dynsrc’));

Hemos eliminado de esta lista (por defecto de la libreria) los valores ‘class’ y ‘styles’ pero se podría ajustar con las que interes.

En caso de no querer hacerlo para todos los orígenes, dado que conocemos la URL del origen se puede condicionar con algo del tipo:

if(preg_match ( “/(.+)(dominio1|dominio2)(.+)/”, $url )){
         $feed->strip_attributes(array(‘bgsound’, ‘expr’, ‘id’,’onclick’, ‘onerror’, ‘onfinish’, ‘onmouseover’, ‘onmouseout’, ‘onfocus’, ‘onblur’, ‘lowsrc’, ‘dynsrc’));
}

Plugin original en http://wordpress.org/extend/plugins/wpematico/

Mini app para Pinterest en android

Agosto 7, 2012  |  Consultoría tecnológica, Software

Ayer publicábamos sobre la esperada app para Pinterest en Android. A falta de “la oficial” hemos encontrado un pequeño wrapper HTML5 que es “casi suficiente” si incluyera un enlace tipo “compartir foto”. Habrá que conformarse hasta que tengamos una versión oficial. Está no la hemos encontrado en el Market (Google Play en realidad) por lo que hay que descargarlo (enlace directo) y ejecutar el archivo para lo que tendrás que tener habilitado los “origenes desconocidos” en las preferencias de aplicaciones de tu dispositivo Android.

Forzar el enlace a imágenes por defecto en WordPress

Junio 15, 2012  |  Software, Wordpress

En los sitios que gestionamos basados en WordPress, hoy en día es habitual incluir siempre mecanismos via funciones o plugins para ampliar las fotos por Javascript al pulsar sobre una imagen de una entrada. Son los conocidos como lightbox, greybox, etc. La mayoría de estos plugins comprueban para ello que el destino del enlace de la foto sea a su vez una imagen (*.jpg, *.png, etc) y montan todo esto de forma automática.

El inconveniente es que WordPress por defecto generará el enlace de la imagen al insertarla a su “página” en la librería multimedia (post) y no a la versión original de la misma, lo que hace que el evento no se ejecute y cargue otra página (la de la entrada de la imagen) que por la dimensiones de la misma además, suele tener un resultado visual bastante catastrófico.

La solución es tan simple como usar el botón “URL del archivo” al insertarla pero eso requiere recordar eso en cada inserción de imagen.  Como este es un parametro de las opciones de WordPress se  puede modificar su comportamiento por defecto cambiando el valor de la entrada “image_default_link_type” en la tabla wp_options o accediendo (en caso de tener permisos para ello tu usuario) a estas opciones desde la URL de tu blog tipo: tudominio.com/wp-admin/options.php

Los valores pueden ser:

  • "file" – Usar el enlace a la imagen:   http://tudominio.com/wp-content/2012/06/mifoto.png
  • "post" – Usar la URL del post de la imagen:    http://tudominio.com/?attachment=122

En alguna documentación de WordPress dice que el valor por defecto (en blanco) es “file” pero en nuestro caso hemos tenido que forzar ese valor para utilizarlo. También hay quienes reportan que las imagenes en si “recuerdan” este valor por lo que afectará a las que se suban después del cambio, pero nosotros no hemos experimentado ese problema.

Confiamos que os sea útil.

Bye, bye Pivotal Tracker

Agosto 12, 2011  |  Consultoría tecnológica, Software

Durante casi año y medio hemos venido usando una magnífica herramienta de gestión de proyecto “ágiles” (tema para otra ocasión) denominada Pivotal Tracker. Desarrollada en Ruby en forma de app online la misma ha ido madurando gracias a un grupo reducido de testers entre los que nos encontrábamos  hasta salir al mercado en forma de aplicación de pago.

Pivotal Tracker permite a un equipo de desarrollo aplicar técnicas Scrum para la gestión de las tareas asociadas al desarrollo de un proyecto de una forma sumamente visual e intuitiva.

Nos ha convencido algo menos el plan de precios elegido por sus desarrolladores para la versión comercial, motivo por el que ya estamos probando otras herramientas. En todo caso Tracker es una herramienta sumamente recomendable y fiable en la gestión diaria de proyectos de desarrollo. Sigue siendo gratuita para proyectos open source y benéficos.