Recuperar una contraseña perdida en Ubuntu

Me pasó ayer que a una amiga mía le dejaron un equipo con Ubuntu 12.10 instalado y quería que le ayudara con algunas cosillas. Era la primera vez que usaba un sistema Linux. Si recordáis vuestra «primera vez» os imagináis que estaría llena de dudas (yo estaba lleno de dudas, y eso que llegué a Linux mayor y curtido, después de haber bregado en MS-DOS y con el BASIC de Amstrad en mis inicios informáticos) así que fui para echarle un ojo al equipo e intentar aclararle las preguntas que pudiera tener. Y claro, el primer problema que me encuentro es que el le dejó el equipo le dijo la contraseña, pero no se la escribió… eran varios caracteres pero por cuestiones fonéticas y de mayúsculas/minúsculas y espacios teníamos como… no sé, un huevo y medio de combinaciones. Conclusión, acabo antes cambiando la contraseña que intentando sacar esa por fuerza bruta.

Lo primero para recuperar la contraseña es arrancar en el modo recovery. Para hacer esto tienes que arrancar el equipo y después de que cargue la BIOS, y antes de que aparezca el logo de Ubuntu, pulsáis SHIFT para entrar a GRUB. Allí váis a la línea «Advanced Options» y tras ello seleccionáis la línea que acaba con (recovery mode).Y finalmente elegís la opción Drop to root shell prompt.

Bueno, ya estáis en una consola con permisos de root. Ahora os toca «montar» la partición / para poder escribir en ella:

mount -o remount,rw /
#y si tienes otras particiones las puedes montar con
mount --all

Muy bien, con la partición montada ya puedes escribir en el disco, ahora sólo te queda escribir

passwd nombre_de_usuario

Tras esto te pedirá que escribas dos veces la nueva contraseña (dos veces para confirmar que la escribes bien, por seguridad). Ahora sólo te queda apagar o reiniciar. Tienes varias opciones que pueden ser las siguientes:

#reiniciar
init 6
#apagar
init 0
#apagar (otra forma)
shutdown -r now
#reiniciar (otra forma)
reboot

Y contraseña perdida reseteada.

Automatizar la ejecución de scripts PHP en servidores Linux con cron y cURL

En el pasado ya hablamos en este blog de automatizar tareas en MySQL y de hacer uso de cURL para procesar formularios y enviarlos a un servicio web REST. ¿Y si os digo que cURL también se puede usar para atomatizar la ejecución de scripts PHP?

Seguro que más de una vez has pensado «Molaba que mi página enviara un correo a todos aquellos usuarios que están de cumpleaños» o cosas así. Puedes pensar que da mucho la vara, pero para nada. No sé si lo comenté la otra vez, pero cURL además de poder ser usado desde PHP también puede ser llamado desde la línea de comandos, así que nos permite, desde una consola, llamar a un script de php por protocolo http (bueno, de hecho cURL puede usar varios protocolos como FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE o LDAP) para que se ejecute. Ahora a esto súmale que en un servidor Linux tenemos cron, que nos permite automatizar tareas, como la ejecución de archivos. Solución: programamos que cron ejecute la la llamada a nuestro script de PHP mediante cURL todos los días a una hora concreta.

Veamos un ejemplo en el que ejecutamos un script llamado cumple.php (imagináos que sea un script que felicita el cumpleaños a los usuarios de nuestra web, nos da igual el contenido del script, aquí la clave es automatizar la llamada) todos los días un minuto después de medianoche. Basta con editar el fichero de cron (por ejemplo con crontab -e) y añadir esta línea:

1 0 * * * /usr/bin/curl http://alojamiento/miweb/cumple.php

Bueno, el primer parámetro es el minuto, el segundo la hora y luego irían día del mes, mes y día de la semana (que en este caso van con * porque queremos que sea todos los días, no un día en concreto). Tras los parámetros temporales metemos la orden a ejecutar. En este caso llamamos a cURL (que suele estar en la carpeta /usr/bin/) seguido de la dirección donde esté el script para que sea llamado por protocolo http.

Para mis info sobre cURL puedes buscar aquí, y sobre cron mismamente te ayuda la Wikipedia.

Convertir m4a a mp3 en Ubuntu y Mint (o a ogg, FLAC…)

De vez en cuando acaba en mi disco duro alguna carpeta con archivos de audio en m4a (debe haber mucha gente con iCacharros por el mundo). Problema 1, mi viejo reproductor de mp3 no soporta ese formato. Problema 2, el Mixxx, que uso para pinchar, tampoco lo reconoce. En todo caso, convertir archivos de audio m4a a mp3 no es complicado.

Lo primero es iros a la consola e instalar el conversor de archivos que ya está en los repositorios:

sudo apt-get install soundconverter

Ok, all right, yeah man. Ya tienes tu programilla conversor. En el menú Preferencias podrás elegir el tipo de archivo al que quieres convertir (mp3, FLAC, ogg, opus o wav) y la calidad del mismo. Por defecto creo que convierte a ogg si no defines algo distinto.

Preferencias Soundconverter
Ventana de preferencias de Soundconverter.

Luego el procedimiento es simple. Si quieres añadir una carpeta entera pulsas el botón gordo de Añadir Carpeta, si es para archivos sueltos pulsas el de Añadir Archivo. Cuando estén cargados pulsáis Convertir. Aquí estoy a punto de convertir los temas de la primera maqueta de Mutant Squad (Reset the World) a mp3.

conversor soundconverter
Convirtiendo a mp3 Reset The World, de Mutant Squad

Y aquí están en proceso:

convertir audio soundconverter
Proceso de conversión.

Y con esto ya tenéis solucionada la cuestión de la conversión de formatos.

Servidor de Chat con Raspberry Pi

Un amigo me ha dejado una Raspberry Pi y ando dando vueltas a experimentos varios. Esta mañana, hablando con un compañero de curso, este me comentó de un proyecto libre para convertir equipos en centros multimedia basado en software de XBOX de Microsoft (XBMC), si bien llegamos a la conclusión de que el pequeño miniordenador educativo tal vez no era lo más idóneo si quieres reproducir películas en HD (ojo, que hay una versión para Raspberry Pi de dicho software). Pero con todo esto del PRISM y el espionaje descarado de la NSA tal vez un servidor de chat pueda interesar a alguien.

Raspberry Pi de 2011
La Raspberry Pi del experimento

En este caso vamos a usar Prosody, y vamos a suponer que estáis usando la versión adaptada de Debian para la Raspberry Pi. Lo primero, como no, instalar Prosody:

sudo apt-get install prosody

Ok, ya está instalado. Con esto, el archivo de configuración básico y un par de usuarios creados ya podrías operar, pero vamos a configurar un poco la historia. Lo primero vamos a meter las librerías para encriptación, compresión y soporte de base de datos:

sudo apt-get install luasec lua-zlib luadbi

Con esto ya tenemos las librerías necesarias. Ahora toca irse al archivo de configuración y activar ciertos módulos. Dichos módulos, por defecto, vienen desactivados ya que las líneas en el archivo de configuración están comentadas con dos guiones al principio de la línea. Para descomentarlas simplemente borra esos guiones.

Para entrar a editar el archivo de configuración:

sudo gedit /etc/prosody/prosody.cfg.lua

Allí elegís ya los módulos a activar. Yo en el mío he activado estos:

                "privacy"; -- Support privacy lists
                "compression"; -- Stream compression
                "groups"; --Shared roster support
                "roster"; -- Allow users to have a roster. Recommended 
                "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
                "tls"; -- Add support for secure TLS on c2s/s2s connections
                "disco"; -- Service discovery
                "private"; -- Private XML storage (for room bookmarks, etc.)
                "vcard"; -- Allow users to set vCards                
                "version"; -- Replies to server version requests
                "uptime"; -- Report how long server has been running
                "time"; -- Let others know the time here on this server
                "ping"; -- Replies to XMPP pings with pongs
                "adhoc"; -- Support for "ad-hoc commands" that can be executed with an XMPP client
                "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands

Vosotros configurad como queráis. Ahora sí que vamos con un punto importante: ¿queremos que la gente pueda registrarse o queremos sólo poder crear usuarios nosotros para tener un mayor control del acceso? Ya que hablamos de seguridad y privacidad es un punto importante. Por defecto el módulo de registro y la opción de permitir el registro están desactivados, así que si queremos activarlo toca descomentar el módulo «register» y la línea que pone allow_registration=true. Es de suponer que no tendréis una ip fija, al menos en España lo normal es tenerla dinámica y la fija implica un sobrecargo en la factura, por lo que será cosa buena haceros con un dominio (podéis conseguir uno gratis en noip.com). Luego buscáis en la configuracion una línea que pone VirtualHost «example.com» y la cambiáis por vuestro dominio. Debajo habrá una línea que pone enabled = false, la comentáis o borráis y estará activado vuestro dominio.

Bueno, con esto ya tendrías el servidor de chat furrulando cosa buena. Pero como no queremos que un pajillero del FBI lea lo que escribimos casi mejor vamos a encriptar, que para algo metimos antes el módulo (aunque si leemos entre líneas la declaración de Snowden, es probable que la NSA ya sea capaz de romper la seguridad SSL). En todo caso lo primero es irnos a la carpeta de certificados de Prosody y desde allí trabajar:

cd /etc/prosody/certs/
sudo openssl req -new -x509 -days 365 -nodes -out "prosody.cert" -keyout "prosody.key"

Tras esto te pedirá una serie de datos que, excepto uno, no son muy relevantes. La excepción es Common Name (e.g. server FQDN or YOUR name) []:, donde tenéis que poner el nombre de dominio conseguido antes, el resto si queréis los podéis ignorar. Una vez acabado este proceso se crearán dos archivos: prosody.cert y prosody.key. Con ellos creados os toca volver a abrir para editar el archivo de configuración principal.

Ahí tenéis que copiar lo siguiente dos veces:

ssl = {
key = “/etc/prosody/certs/prosody.key”;
certificate = “/etc/prosody/certs/prosody.cert”;
}

La primera vez lo ponéis sobre las rutas ssl por defecto y ponéis exactamente lo mismo justo debajo de la línea de VirtualHost «elnombrededominioquetengáis».

Yo no me voy a meter a configurar base de datos, aunque instalara antes la librería, porque en una Raspeberry Pi no es que vayamos sobrados de recursos. Si queréis hacerlo tenéis un excelente tutorial en español aquí (fue uno de los varios que utilicé como documentación mientras hacía las pruebas).

Bueno, una vez acabado esto ya sólo nos queda lanzar Prosody:

sudo /etc/init.d/prosody start

Podéis modificar el sistema para que arranque al a vez que el sistema operativo, si lo véis necesario. Ahora con cualquier cliente de XMPP o Jabber, como Pidgin, podéis acceder a él. Cuando entréis por primera vez os pedirá que creéis una cuenta en el servidor. Bueno, si habéis habilitado el registro de usuarios bien, ¿y si no? Ya lo comentamos arriba, puedes no permitir el registro y crear tú los usuarios, si quieres un servidor de chat para un pequeño grupo de trabajo/amigos no es mala idea. Bueno, los usuarios se crean con la sintaxis sudo prosodyctl adduser nombredeusuario@eldominioquepillaras. Por ejemplo, supongamos que tu dominio es fucknsa.cc y el usuario que quieres crear se va a llamar, no sé, un nombre aleatorio, por ejemplo assange:

sudo prosodyctl adduser assange@fucknsa.cc

Por cierto, que si quieres montar el servidor de chat en una red local no necesitarás el dominio.

Bueno, ya tienes tu cacharrito con servidor de chat. A divertirse tocan.

MAT: Limpiando metadatos en Ubuntu

Capítulo 3 del tema de metadatos y software libre. Ya los limpiamos de LibreOffice y de los JPG, pero ahora toca el capítulo final. ¿Si te digo que hay un toolkit que los limpia de casi todos los formatos? Ok, podría haber empezado por ahí… pero así me ha dado para tres artículos.

¿Qué es MAT? Es Metadata Anonymisation Toolkit, una serie de herramientas que borrarán los metadatos de vuestros archivos en Ubuntu: ofimáticos, imágentes, pdf, torrents… No soporta todos los formatos del mundo, pero sí muchos de los más habituales.

Aunque si vamos a ser sinceros, este no es un software de Ubuntu sino de Debian, pero al ser una aplicación el Python bastan con unas cuántas dependencias instaladas y la cosa irá como la seda.

Lo primero, a instalar las dependencias:

sudo apt-get install python-hachoir-core python-hachoir-parser python-pdfrw python-cairo python-poppler python-mutagen libimage-exiftool-perl libimage-info-perl

Con esto instalado basta bajarse el archivo comprimido con el programa desde su sitio oficial. Una vez descargado lo descomprimís y le otorgáis permisos de ejecución. Podéis hacerlo desde el entorno gráfico con un click derecho en Propiedades->Permisos->Permitir ejecutar el archivo como un programa sobre el archivo mat-gui; pero si preferís también podéis hacerlo desde comandos:

sudo chmod  +x mat-gui

Llegados a este punto deberíais tener el programa instalado y funcionando. Para su uso tendrás un entorno gráfico extremadamente simple: Un botón para agregar archivos, otro para limpiarlos, un botón para buscar qué ficheros tienen metadatos y un botón de cierre/apagado de la aplicación. Todos con iconos muy intuitivos. En su menú de Preferencias (se accede a través del menú Edit) podrás definir opciones como si quieres que genere una copia limpia de metadatos o si prefieres que directamente sobreescriba el original (la opción Backup), y algunas más menos interesante.

En fin, con esto ya podéis vivir más tranquilos en cuanto al tema de ir dejando vuestra información por la red.

Eliminar metadatos de fotos en Ubuntu

Si hablábamos el otro día de metadatos en OpenOffice/LibreOffice hoy vamos a ver cómo borrar los metadatos de las fotos, en este caso sólo del formato jpg. Muchas veces subimos fotografías desde el móvil, lo cual lleva un montón de metadatos inscrustados, los llamados EXIF.

Y es que si una cámara ya va proporcionar la fecha y la hora en la que fue tomado y el modelo (y en caso, por ejemplo, de mi cárama Olympus un montón de datos técnicos, como el modo de flash, el perfil de color…) un móvil puede traer hasta las coordenadas geográficas del lugar donde se ha tomado la foto.

Ya sea por respeto a nuestra intimidad, paranoia o simplemente que hayamos puesto una excusa y esa foto nos la pueda joder («-Cariño estaba trabajando» «-Pues según esta foto a esa hora estabas en el bar») en Ubuntu/Mint/Debian tenemos una herramienta que permite que nuestros jpg se queden limpitos de ellos: jhead.

Se trata de una herramienta de línea de comandos, por lo que lo primero es instalarlo:

sudo apt-get install jhead

Luego la orden para eliminar los datos tampoco tiene mucha ciencia:

jhead -purejpg /ruta/imagen.jpg

Basta con pasarle la ruta de la imagen que queremos dejar sin metadatos y punto. Pero lo verdaderamente útil, como en todo el software de consola, viene cuando queremos trabajar con muchos archivos:

jhead -purejpg /ruta/*.jpg

Podemos usar comodines para afectar a todos los archivos de una carpeta concreta, ahorrándonos el trabajo de ir uno a uno.

Como ya dije arriba, este software sólo trabaja con jpg y sus derivaciones: jpeg, JPEG y JPG. En cualquier caso es el formato más habitual en cámaras y móviles, pero de todas formas en el futuro hablaremos de más opciones para trabajar con imágenes.

Scripts para parar, arrancar y reiniciar Apache y MySQL en Ubuntu

Muchos desarrolladores tenemos en nuestro equipo un entorno LAMPP para testear nuestros trabajos web. Como generalmente uso el ordeador para trabajar tengo configurado que arranquen con el equipo por defecto tanto MySQL como Apache, ya que rara vez estoy ON en mi equipo y no estoy trasteando con algo de código.

Pero a veces, para virtualizar o para trabajar con algún editor de vídeo me veo obligado a tener toda la memoria posible para que la cosa no se torne inusable
. Cierto que son sólo dos líneas en el terminal… pero con cada script las dejo en una sola:

Script para parar Apache 2 y MySQL:

#!/bin/bash/

sudo apache2ctl -k stop
sudo /etc/init.d/mysql stop

Script para arrancar Apache2 y MySQL

#!/bin/bash/

sudo apache2ctl -k start
sudo /etc/init.d/mysql start

Y finalmente, script para reiniciarlos

#!/bin/bash/

sudo apache2ctl -k restart
sudo /etc/init.d/mysql restart

Te dará una serie de warnings, pero ni caso, funciona (compruébalo intentando conectar con MySQL o intentando ver algunha página en local).

En fin, por hoy nada más.

Bluegriffon, editor HTML5 WYSIWYG

En los comentarios del artículo sobre BlueFish ya se habló de este editor de HTML WYSIWYG, considerado por muchos como la evolución natural del Kompozer.

Basado en el motor de renderizado Gecko de Mozilla (es decir, lo que hagas con BlueGriffon se te verá en el Firefox tal cual), BlueGriffon incorpora una serie de herramientas muy interesantes para trabajar tanto con CSS3 (donde podrás editar estilos gráficamente) como con HTML5, dando por ejemplo una comodidad pasmosa a la hora de trabajar con vídeo, además de incorporar las típicas herramientas para realizar rápidamente formularios o tablas. Una de sus características más productivas es su ventana para navegar por el DOM.

Logotipo BlueGriffon
El grifo azul

Incluye además el popular editor de gráficos vectoriales SVG Edit, incluso añadiéndote las pertinentes líneas de Javascript para poder usarlo con HTML 4.

Pero no todo es WYSIWYG, el programador más experimentado podrá ir a la vista de código para trabajar a un nivel más detallado y ahorrarse «código basura» que suelen meter estos editores.

En la web oficial del proyecto podéis además encontrar multitud de Add-ons que permiten agregar interesantes funcionalidades al programa, como un cliente FTP, un manual de ayuda, un emulador de dispositivos móviles, un editor avanzado de css, un editor de fórmulas matemáticas, un administrador de Toolkits… en fin, que es altamente extensible.

Como punto negro sólo diré que no he logrado que PhoneGAP se integre tan bien como lo hacía el Dreamweaver o Eclipse (ya sabéis que soy anti Adobe, pero he de reconocer que la integración jQueryMobile/PhoneGAP/Dreamweaver 5.5 era excepcional), pero en general obtiene un aprobado alto. Además, ha aparecido bajo múltiples licencias libres (GPL, Mozilla), lo cual siempre aporta tranquilidad y fiabilidad al proyecto.

Quitar las búsquedas de Amazon de Ubuntu

Minientrada:

¿Cansado de las búsquedas en Amazon de Ubuntu? Tranquilo, puedes desactivarlas (lo bueno del software libre, que es modificable 100%). Si no eres cliente de Amazon o simplemente no quieres que esa compañía tenga acceso a tus búsquedas (para mi, un aberrante ataque a nuestra privacidad), puedes mandarlas al guano.

La opción más básica es hacerlo desde el entorno gráfico. Pero también basta una línea desde el terminal:

sudo apt-get purge unity-lens-shopping

Basta con esa orden y problema resuelto.

Bluefish, la alternativa libre a Dreamweaver en Linux

Cierto es que yo utilizo Aptana Studio, Eclipse y Geany para todo, por lo que nunca me he preocupado mucho de buscar una alternativa en Linux a Dreamweaver, puesto que ese software apenas lo usaba cuando desarrollaba en Windows por parecerme especialmente incómodo para editar código.

Pero si lo que quieres es un editor que te permita generar código a base de rellenar datos en un formulario y pulsar botones para generar conexiones a bases de datos, tablas o formularios entonces tu alternativa es Bluefish, bastante más sólido y completo que Kompozer, el cual siempre me ha parecido muy limitado.

Logotipo Bluefish Editor 2.2

Bluefish te permitirá trabajar con multitud de lenguajes (podéis ver el listado de lenguajes y CMS soportados en la web del proyecto), dándote referencias en línea, marcadores varios para distintas etiquetas y palabras claves, autocompletado, autocerrado de etiquetas, resaltado de comienzos y finales de bloque, cliente de FTP para trabajar con archivos remotos,  generador de thumbnails…

A pesar del título no sólo está disponible para Linux, sino que hay versiones para Mac, Solaris, BSD y Windows. En fin, si echas en falta el programa de Adobe esta puede ser tu solución.

Se trata de software libre, así que lo podéis descargar gratis desde la propia web o, en caso de Ubuntu, instalarlo con un apt-get install bluefish.