miércoles 25 de marzo de 2009

Consejos sobre el Servicio de base de datos MySQL

El software MySQL® proporciona un servidor de base de datos SQL (Structured Query Language) muy rápido, multi-threaded, multi usuario y robusto. El servidor MySQL está diseñado para entornos de producción críticos, con alta carga de trabajo así como para integrarse en software para ser distribuido. Es ideal para sitios web dinámicos.

Es indispensable que lea la documentación oficial de MySQL en español (en línea). También puede descargarse para ser consultada sin conexión a Internet.

El objetivo de este artículo es mostrar información básica y que es indispensable conocer sobre MySQL para que el servicio sea más seguro.

El archivo de configuración principal de MySQL es "/etc/mysql/my.cnf".

Por default los logs no vienen activados, por lo que es recomendable activarse, esto se hace descomentando la línea "log = /var/log/mysql/mysql.log" de "/etc/mysql/my.cnf"

Por Default, solo se permite conexiones al Servicio MySQL de manera local. Para permitir conexiones remotas hay que modificar la directiva "bind-address" del archivo "/etc/mysql/my.cnf" indicándole que escuche por la IP de interfaz de red deseada de tal manera que quede de la siguiente manera:

bind-address = 192.168.0.1

Sustituya "192.168.0.1" por la IP de su servidor.

Por default, el usuario root (el administrador) de MySQL no tiene asignado ningún password. Para asignarle un password hay que hacer ejecutar el siguiente comando:

$ mysqladmin -u root password su_password

Otra manera de hacerlo es directamente desde el cliente mysql:

$ mysql
> use mysql;
> update user set Password=PASSWORD('nuevo_password') where user='root';
> flush privileges;

miércoles 11 de marzo de 2009

Recuperar password de root

Se puede recuperar el password de root de diferentes maneras. A continuación se explican algunas de ellas.

Opción 1
- Arrancar con un livecd. Knoppix es una buena opción
- Montar la partición donde se encuentra instalado el sistema:
# mount -o rw /dev/sda1 /mnt/sda1
- Editar el archivo "/etc/shadow" de la partición montada y borrar el segundo campo de la linea del usuario root. Quedaría algo así:
root::xxxxx:0:xxxxx:x:::
- Reiniciar y arrancar con debian
- Loguearse como root (no pedirá password)
- Asignar nuevo password:
# passwd root

Opción 2
- Arrancar con un livecd. Knoppix es una buena opción
- Montar la partición donde se encuentra instalado el sistema:
# mount -o rw /dev/sda1 /mnt/sda1
- Hacer un chroot de la partición:
# chroot /mnt/sda1
- Asignar nuevo password a root:
# passwd root

viernes 30 de enero de 2009

Recuperar archivos eliminados

Cayó en mis manos una memoria USB de 2 GB con el sistema de particiones dañado y por ende los archivos inaccesibles. Anteriormente, en una ocasión había recuperado archivos eliminados accidentalmente de una USB con el programa PC Inspector smart recovery desde Windows. Así que fue lo primero que probé pero dicho programa solo recuperaba imágenes. Así que me decidí a probar las herramientas libres forenses disponibles para GNU/Linux.

Foremost

A continuación los pasos que seguí para recuperar los archivos con foremost:

Instalación:
# aptitude install foremost

Se genera una imagen de la unidad de disco de la cual se quiere recuperar información antes de realizar cualquier acción:
$ dd if=/dev/sdc1 of=/ruta/de/la/imagen.dd

Luego ejecutamos lo siguiente para recuperar todos los tipos de archivos posibles soportados por foremost:
$ foremost -t all -i /ruta/de/la/imagen.dd

Para recuperar sólo documentos, hojas de calculo, presentaciones e imágenes se ejecuta:
$ foremost -vd -t ole,jpeg -i /ruta/de/la/imagen.dd

En la ruta de donde se ejecuto la orden anterior se creará un directorio llamado "output" con los archivos recuperados.

Para más información ejecutar:
$ man foremost

Testdik

Otra herramienta poderosa es testdik. A continuación los pasos a seguir:

Opcionalmente, puede generarse una imagen de la unidad de donde se desea recuperar los archivos.

Instalación:
# aptitude install testdisk

Se ejecuta la siguiente orden para recuperar los archivos de un disco sin generar una imagen:
# photorec /d /algun/lugar/

Si se generó una imagen de la unidad, se ejecuta la siguiente orden:
# photorec /d /algun/lugar/ /ruta/de/la/imagen.dd

"/algun/lugar/" es la ruta donde se guardarán los archivos recuperados.

Se ejecutará el programa, donde hay que seleccionar el disco de donde se desean recuperar los archivos, posteriormente el tipo de partición (normalmente [Intel ] Intel/PC partition) luego la partición especifica de donde se encontraban los archivos.

Después de unos minutos los archivos serán recuperados.

Para más información ejecutar:
# man photorec


Otras aplicaciones

Hay más aplicaciones que sirven para este propósito, a continuación listo algunas:
- Testdrive
- Autopsy (la probe pero no logre entenderla)
- Magicrescue
- Scalpel
- Tct

miércoles 28 de enero de 2009

Abanq: Importe con letra en las facturas

Por default en el campo "texto" de la tabla "reciboscli" se almacena la cantidad con letra, pero la manera en que es generada no funciona para México por lo que hay que modificarse. Las modificaciones a realizar son las siguientes:

En el script "tesoreria/scripts/flfactteso.qs"

Se agrega el siguiente código en la función "oficial_generarReciboCli":

/* inicio del código agregado. */

// declaración de variables
var redondeado:Number=0;
var centavos:Number=0;
var conletra:String;
var totalconletra:String;
var conletra = util.enLetra(importe); // Cantidad con numero de la parte entera
redondeado = Math.round(importe); // redondea la cantidad al numero entero mas próximo para conocer centavos

if (redondeado < importe){
centavos = importe - redondeado;
centavos = centavos * 100;
}
if (redondeado > importe) {
centavos = redondeado - importe;
centavos = centavos * 100;
}
if (centavos == 0)
{
totalconletra = conletra + " PESOS " + centavos + centavos + "/100 M.N.";
}
else{
totalconletra = conletra + " PESOS " + centavos + "/100 M.N.";
}
/*
Hubiera sido mas sencillo obtener los decimales con util.partDecimal(importe),
pero al usarlo devolvía una bonita violación de segmento:
// var centavos:Number = util.partDecimal(importe);
*/

/* fin del código agregado. */

En la misma función un poco más abajo se modifica:
setValueBuffer("texto", util.enLetraMoneda(importe, divisa));
Por:
setValueBuffer("texto", totalconletra.upper()); /* se usa upper para que muestre el texto mio en mayúscula.*/


En el archivo "informes/queries/i_facturascli.qry"

Se cambia:
empresa,facturascli,lineasfacturascli,albaranescli
Por:
empresa,facturascli,lineasfacturascli,albaranescli,reciboscli

En las etiquetas select del mismo archivo se agrega el campo "reciboscli.texto" y en las etiquetas from se cambia:

empresa,facturascli INNER JOIN lineasfacturascli ON facturascli.idfactura = lineasfacturascli.idfactura
LEFT OUTER JOIN albaranescli ON albaranescli.idalbaran = lineasfacturascli.idalbaran

Por:

empresa,facturascli INNER JOIN lineasfacturascli ON facturascli.idfactura = lineasfacturascli.idfactura
INNER JOIN reciboscli ON reciboscli.idfactura = facturascli.idfactura
LEFT OUTER JOIN albaranescli ON albaranescli.idalbaran = lineasfacturascli.idalbaran


En el archivo "informes/reports/i_facturascli.kut"

Se manda llamar el campo "reciboscli.texto":
BorderStyle="0" BorderWidth="1" CalculationType="5"
CommaSeparator="0" Currency="32" DataType="0"
DateFormat="11" Field="reciboscli.texto" FontFamily="Verdana"
FontItalic="0" FontSize="10" FontWeight="50"
ForegroundColor="0,0,0" HAlignment="0" Height="20"
NegValueColor="0,0,0" Precision="0" Text="[reciboscli.texto]"
VAlignment="1" Width="350" WordWrap="0"
X="168" Y="23" />

martes 27 de enero de 2009

Configuración de impresoras en GNU/Linux

Aunque en la actualidad la gran mayoría de las impresoras son compatibles con GNU/Linux, es recomendable estar completamente seguro de ello y verificarlo antes de comprar una. Esto se puede comprobar en "http://www.linuxfoundation.org/en/OpenPrinting". Una vez que sabemos que es compatible y el driver que utiliza se procede a comprarla.

En este caso se va a configurar una impresora Laser Samsung ML-2240 con los drivers que vienen incluido en el CD de la impresora.

Configuración de la impresora localmente mediante su CD

A continuación los pasos:
- Instalar cups:
# aptitude install cups
- Insertar CD
- Montarlo (si no se monta automáticamente) y ubicarse en el directorio Linux:
# cd /media/cdrom0/Linux
- Iniciar la instalación:
# sh install.sh
- Seguir las instrucciones

- Una vez finalizado estará configurada la impresora. Al acceder con en el navegador a "http://localhost:631" se puede configurar y administrar la impresora de manera avanzada.


Configuración de la impresora localmente mediante CUPS

Cups (Common Unix Printing System) es una herramienta web (http://localhost:631) para la administración y configuración de impresoras permitiendo agregar, eliminar, configurar, compartir impresoras, administrar trabajos de impresión, entre muchas otras cosas. Es la herramienta principal para estos menesteres. Cuando se realicen las modificaciones pedirá el password de root del equipo para almacenar las modificaciones en "/etc/cups/cupsd.conf".

# aptitude install cups cups-client cups-common

Desde cups se puede agregar impresoras, pero antes de agregarla hay que instalar el paquete (si no esta instalado) que contiene el Driver o controlador. Si no se sabe el controlador que usa hay que averiguarlo en "http://www.linuxfoundation.org/en/OpenPrinting".

Para agregar una impresora mediante cups hay que acceder a "http://localhost:631" mediante un navegador, en el Menú "Administración" en la opción "Añadir impresora". Se elige un nombre (el más importante y será el usado por las aplicaciones para imprimir), ubicación (descripción de la ubicación) y descripción (de la impresora). Luego se elige el tipo de conexión (aparecerá automáticamente la impresora conectada con su conexión) pudiendo elegir AppSocket/HP jetDirect (protocolo usado por impresoras HP JetDirect), LPT1, USB, http, ipp (a través de otro servidor cups o usado por una Impresora con tarjeta de red), samba, entre otros. Se elige el controlador; Si no está el controlador en la lista se puede proporcionar el archivo ppd de la impresora obtenido del CD de la impresora o descargado de la web. Finalmente se configura la "URI de la conexión".


Configuración de impresoras compartidas

La compartición de impresoras se puede realizar de varias maneras. Aquí explico algunas.

Mediante cups (localhost:631) en el server y en el cliente

Se requiere instalar cups en el cliente y en el server:
# aptitude install cups

- En el server de impresión (donde esta conectada la impresora) en la pestaña "Administración" se habilita la opción "Compartir impresoras públicas conectadas a este sistema". Desde la pestaña "Impresoras", seleccionando la impresora instalada se habilita la opción "Publicar Impresora".
- En el cliente en la pestaña "Administración" se habilita la opción "Mostrar impresoras compartidas por otros sistemas", se guardan los cambios y en unos momentos aparecerá configurada la impresora pudiéndose corroborar desde la pestaña "Impresoras". La impresora tendrá un "URI de la conexión" del tipo "ipp://192.168.1.1:631/printers/NombreImpresora"

Mediante samba

- En el server instalar samba (aptitude install samba) y en "/etc/samba/smb.conf" en la sección printers ponemos el parámetro "public" como "yes" para compartir la impresora sin necesidad de password o "no" para compartir con previa autenticación:
[printers]
comment = Impresoras
browseable = no
path = /var/spool/samba
printable = yes
public = yes
create mask = 0700

Para autenticarse con usuario, se agrega el usuario sin shell al sistema, se le asigna password en el sistema y para samba:
# useradd -s /sbin/nologin usuario
# passwd usuario
# smbpasswd -a usuario

- En los clientes Unix a través de cups se agrega una impresora cuyo tipo de conexión sea "samba" y como URI de la conexión "smb://UsuarioSmb:password@equipo_con_la_impresora/nombreImpresora". Para un dominio el URI de la conexión es "smb://UsuarioSmb:password@DOMINIO/equipo_con_la_impresora/nombreImpresora"

- En un cliente WindowsXP se accede a "\\192.168.1.1\nombreImpresora", se le da doble clic a la impresora y se siguen las instrucciones en pantalla para instalarla. Si el parámetro "public" esta como "no", cuando quiera imprimir primeramente deberá loguearse con el usuario creado accediendo a "\\192.168.1.1" y luego mandar imprimir.

Configurar impresoras con su propia tarjeta de red e IP
Se agrega en el cliente la impresora a través de CUPS eligiendo como protocolo "IPP" y como tipo de URI de conexión "ipp://192.168.1.1/nombreImpresora" o "http://192.168.1.1:631/nombreImpresora".


Impresoras HP
Si la impresora a configurar es HP hay que instalar los siguientes paquetes:
- hp-setup (herramienta de configuración)
- hplip (drivers)
- hpijs (drivers)

Luego, desde consola como administrador, ejecutar:
# hp-setup

Seguir las instrucciones en pantalla.


Otros paquetes o aplicaciones relacionados con impresoras

foomatic
Foomatic es un conjunto de controladores y herramientas de impresión para muchas impresoras. Estos controladores pueden usarse para agregar una impresora desde Cups, pero foomatic trae una aplicación gráfica llamada foomatic-gui (para Gnome) que permite agregar y administrar impresoras.

kdeprint
Es un administrador de impresoras para KDE parecido a foomatic-gui pero con más opciones.

ghostscript
Trae una gran cantidad de controladores de impresoras.

gutenprint
Trae controladores para muchas impresoras. Estos controladores están especialmente diseñados para realizar impresiones con GIMP obteniendo muy buenos resultados en las impresiones de imágenes.

printconf
Configura automáticamente impresoras USB y paralelo con CUPS



NOTA: Las impresoras agregadas con cualquier aplicación serán visibles desde cups.


Enlaces de interés
http://www.cups.org
http://www.linuxfoundation.org/en/OpenPrinting (antes linuxprinting.org)
http://localhost:631
http://www.scribd.com/doc/2371017/Todo-Linux-78-Iniciacion