martes, 25 de marzo de 2014

Instalando paquetes de 32bit en arquitecturas de 64bit (Debian)

Muchas veces me han dicho: ¿cómo hago para instalar paquetes de 32bit en arquitecturas de 64bit? como es el ejemplo de skype, teamviewer, entre otros, los pasos son muy fáciles a partir de la versión 7 de Debian:
  • dpkg --add-architecture i386
  • apt-get update
  • dpkg -i ubicacion_y_nombre_del_paquete
  • apt-get install -f
Listo, resuelto el problema.

viernes, 31 de enero de 2014

Habilitar USB en los equipos virtuales usando VirtualBox en Linux

Cuando VirtualBox esta instalado en Linux siempre te dice que debes instalar el complemento, y luego que lo instalas, siempre pasa que no están habilitados en las maquinas virtuales la posibilidad de utilizar los puertos USB del huésped:

Muy fácil solo debes ingresar como root las siguientes lineas en el archivo /etc/fstab:

#usbfs
none /proc/bus/usb usbfs devgid=46,devmode=664 0 0

Nota: la primera linea es solo un comentario para saber a futuro para que es.
Luego debes ejecutar:
mount -a

Y debe apagar las maquinas virtuales y VirtualBox, al iniciar ya estará todo habilitado. 

Mas simple imposible.

Usando Samsung MTP en Debian 7 wheezy



Desde hace días que necesitaba ver archivos de mi teléfono Samsung S3 usando mi laptop con Debian, lo conectaba y nada que funcionaba, entonces hice esto:

1) Instale:
aptitude install libmtp-dev fuse libmtp9 pkg-config libfuse-dev libglib2.0-dev libmad0-dev libid3tag0-dev dh-make autotools-dev

Nota: algunos paquetes ya estaban instalados

2) Descargue los binarios de mtpfs

Usaremos el Debian package tools para crear un archivo deb así podremos instalar y desinstalar en vez de hacer el tradicional ./configure; make; make install.

3) Descomprimir el archivo y luego usamos dh_make para convertir los paquetes binarios en un formato que pueda ser usado por Debian packages:
tar zxf mtpfs-1.1.tar.gz
cd mtpfs-1.1
dh_make -s -f ../mtpfs-1.1.tar.gz

4) Ahora construí el archivo deb usando:
fakeroot debian/rules binary

5) El archivo binario será colocado en el mismo directorio del tar.gz, vamos al directorio e instalamos el archivo deb:
cd ..
dpkg -i mtpfs_1.1-1_amd64.deb

Notas: si tu quieres desinstalar mtpfs tu puedes hacer:
dpkg --purge mtpfs

Ojo: asegúrese de que su usuario y root sean miembros del grupo fuse, si no es así usted debe hacer:
usermod -aG fuse $USER
usermod -aG fuse nombre_del_usuario

Creamos un directorio para montar el dispositivo y montamos el dispositivo (primero lo conectamos)
mkdir /media/myPhone
mtpfs /media/myPhone

Cuando termines, para desmontarlo usas:
fusermount -u /media/myPhone

Listo, mas fácil imposible.

domingo, 26 de enero de 2014

Habilitar los caracteres Chino, Coreano y Japones en Debian y Canaima

Para poder visualizar texto en chino, japonés o coreano, debe instalar alguno de los siguientes paquetes:
  • Chino tradicional (Big5): ttf-arphic-bkai00mp
  • Chino simple (GB): ttf-arphic-gbsn00lp
  • Coreano: ttf-baekmuk
  • Japonés: ttf-kochi-mincho
Existen algunos paquetes alternativos para algunos idiomas, aunque los antes mencionados deben ser suficiente.

Listo

Instalando fuentes tipográfica de Windows, Google y Ubuntu en Debian y Canaima

Una de las cosas que mas sucede y que muchas veces no permite que la gente migre al software libre es: que cuando deja de usar el Windows, todos los documentos pierden el formato, esto pasa porque en la versión del software no tenemos las fuentes, para solventarlo podemos hacer:

Primera opción:
Instalamos las fuentes desde el repositorio:
 apt-get install msttcorefonts, aunque yo siempre uso aptitude
Luego las habilitamos:
 fc-cache -fv

Segunda opción:
Copiar la carpeta fuentes del directorio c:\Windows\, en el directorio: /usr/share/fonts/, para que quede con estética le colocaremos de nombre a la carpeta Windows, teniendo como resultado final /usr/share/fonts/Windows, le cambiamos los permisos:
 chmod 755 /usr/share/fonts/Windows
Le cambiamos el propietario:
 chown -Rf root:root /usr/share/fonts/Windows

Por ultimo habilitamos las fuentes con:
 fc-cache -fv
Tercera opción:
Creas un script como este:
 #!/bin/bash
#
# This script helps to install fonts
#
# Set your default font storage directory here
##DEFAULT_DIR="$HOME/fonts"
DEFAULT_DIR=`pwd`
# Set the default font installation directory here
DEFAULT_DEST="/usr/share/fonts/truetype/font-install"

# Don't edit anything below unless you know what you're doing.

echo "In which directory are the fonts?"
echo -n "[$DEFAULT_DIR] "
read DIR

echo
echo "What is the extention (without the dot) of the fonts?"
echo -n "[ttf] "
read EXT

echo
echo "Where should the fonts be installed?"
echo "DO NOT CHANGE THIS UNLESS YOU KNOW WHAT YOU'RE DOING!"
echo -n "[$DEFAULT_DEST] "
read DEST

if [ -z "$DIR" ]; then
    DIR="$DEFAULT_DIR"
fi

if [ -z "$EXT" ]; then
    EXT="ttf"
fi

if [ -z "$DEST" ]; then
    DEST="$DEFAULT_DEST"
fi

sudo -v
if [ $? != 0 ]; then
    echo "Unable to obtain the necessary privileges. Exiting..."
    echo -n "Press <Enter> to continue. "
    read WER
    exit $?
fi

echo
echo

if [ ! -d "$DIR" ]; then
    echo "Directory $DIR does not exist. Exiting..."
    echo -n "Press <Enter> to continue. "
    read SDF
    exit 2
fi

if [ ! -d "$DEST" ]; then
    echo "Directory $DEST does not exist. Exiting..."
    echo -n "Press <Enter> to continue. "
    read DFG
    exit 1
fi

echo "Copying fonts..."
cd "$DIR"

for i in *."$EXT"; do
    sudo cp -iv "$i" "$DEST"
done

echo
echo
echo "Updating the font cache..."
sudo fc-cache -fv

if [ $? != 0 ]; then
    echo "Error updating the font cache. Your fonts haven't been completely installed. Try running sudo fc-cache -fv manually. Exiting..."
    echo -n "Press <Enter> to continue."
    read FSF
    exit $?
fi

echo
echo
echo "Finished."
echo
echo "You will probably need to restart running programs to use the new fonts."
echo -n "Press <Enter> to exit. "
read WERT
exit 0

Le das permisos de ejecución:
 chmod +x nombre_del_archivo_script

Y lo ejecutas:
 ./nombre_del_archivo_script o sh nombre_del_archivo_scrip

Para obtener las funtes de Ubuntu:
 wget http://sourceforge.net/projects/linuxfreedomfor/files/Ubuntu.tar.gz

Lo descomprimes y mueves al directorio:
 tar -xvzf Ubuntu.tar.gz && mv Ubuntu /usr/share/fonts/

Por ultimo sigues los pasos de la segunda opción.

Para las fuentes de Goolge:
wget http://webupd8.googlecode.com/files/install-google-fonts 

Le das permisos de ejecución:
 chmod +x install-google-fonts

Ejecutas:
 ./install-google-fonts o sh install-google-fonts

Listo

miércoles, 22 de enero de 2014

Concatenar y filtrar con grep

Hoy me preguntaron:
  1. ¿cómo puedo realizar una búsqueda y filtrado con grep del contenido de un directorio?
  2. ¿cómo puedo realizar una búsqueda y filtrado del contenido de un archivo?
  3. ¿cómo puedo concatenar varios tipos de búsqueda en un solo grep? bien sea un directorio o del contenido de un archivo.
Pues la repuesta es simple: SI, tu puedes hacer una búsqueda así:

zcat archivo.gz | grep lo_que_quiero_encontrar

De esta forma me mostrara solo lo_que_quiero_encontrar que este dentro del archivo.gz, ahora bien, si quiero filtrar una búsqueda ejecutaría:

 ls -la | grep lo_que_quiero_encontrar

Con esto estaríamos listando todo el contenido de un directorio, pero solo mostramos lo_que_quiero_encontrar, si quiero hacer un filtrado de la búsqueda del contenido del archivo:

 zcat archiv.gz | grep lo_que_quiero_encontrar | grep filtro1

Estaríamos mostrando de lo_que_quiero_encontrar, solo lo que contenga filtro1, si queremos que nos muestre dos búsquedas: lo_que_quiero_encontrar y lo_que_quiero_encontrar_1, tendríamos que hacer así:

ls -la | grep 'lo_que_quiero_encontrar\|lo_que_quiero_encontrar_1'

En este caso, listamos el contenido de un directorio y solo mostramos:  lo_que_quiero_encontrar y lo_que_quiero_encontrar_1, en el caso de que sea del contenido de un archivo:

zcat archiv.gz | grep 'lo_que_quiero_encontrar\|lo_que_quiero_encontrar_1'

También podemos hacer un filtrado de las dos búsquedas:

zcat archiv.gz | grep 'lo_que_quiero_encontrar\|lo_que_quiero_encontrar_1' | grep filtrado1

Así obtenemos del contenido del archivo lo_que_quiero_encontrar y lo_que_quiero_encontrar_1 que contengan filtrado1.

Y listo, mas simple imposible.

jueves, 9 de enero de 2014

Bloquear correo de una determinada IP en POSTFIX

¿Cómo puedo hacer que Postfix bloquee todo el correo procedente de una IP (o rango de IP)?

Podrías configurarlo devolviendo el típico mensaje de 550 Spam o no permitido... etc, es muy sencillo cambiar las direcciones de correo, no así la IP de procedencia. Necesitas algo como:
smtpd_recipient_restrictions = permit_mynetworks,
                                                     reject_unauth_pipelining
                                                     ... mas restricciones ...
                                                     check_client_access hash:/etc/postfix/clientes
                                                     ... mas restricciones ...

En /etc/postfix/clientes pones:

1.2.3.4 550 No me gusta este cliente - me da mucho spam
1.2.3.5 550 otro cliente muy malo que me da spam

También puedes limitar grupos de IPs de la siguiente forma:
1.2.3 550 la clase X 1.2.3.x esta prohibido
10 550 Este rango de direcciones es privado

No olvides postmap /etc/postfix/clientes y postfix reload.

Esto también me sirvió para eliminar el uso de esos roboot, rootkit, spammer, etc, que se encontraban dentro de la institución.

Mas simple imposible.

jueves, 2 de enero de 2014

Instalación de PostgreSQL en Debian GNU/Linux Wheezy

Este articulo explica como instalar el servidor y un cliente de lineas de comandos de la base de datos PostgreSQL en Debian Wheezy.
 
Instalación Para este caso se instalara el servidor y un cliente de lineas de comandos PostgreSQL de la versión 9.1, ejecutando el siguiente comando:
# aptitude install postgresql-9.1
 
Configuración Lo primero que se tiene que hacer es cambiarle la contraseña al usuario ‘postgres’ que se crea luego de haber instalado el paquete:
# passwd postgres
Acceda a la consola de administración de PostgreSQL para cambiar la contraseña del usuario ‘postgres’ con los siguientes comandos:
# su postgres
postgres@nombre_maquina:/directorio$ psql postgres
postgres=# ALTER ROLE postgres PASSWORD 'CONTRASENA_DEL_USUARIO';
Donde ‘postgres’ es el nombre del usuario al cual debe cambiar la contraseña ‘CONTRASENA_DEL_USUARIO’ por la que estableció previamente y luego salga de la sesión, ejecutando los siguientes comandos:
postgres=# \q
postgres@nombre_maquina:/directorio$ exit
 
Configuración de acceso local Para dar acceso local, es decir, dar accesos a clientes PostgreSQL que están en el mismo servidor donde esta instalando el servidor PostgreSQL puede aplicar las siguientes configuraciones básicas:
Debe que cambiar el archivo de configuración del servidor PostgreSQL, con el siguiente comando:
# vim /etc/postgresql/9.1/main/postgresql.conf
Busque la linea listen_addresses y verifique que su valor sea el siguiente:
listen_addresses = 'localhost'
Guarde el archivo y salga del editor.
También debe modificar el archivo de configuración del cliente PostgreSQL, con el siguiente comando:
# vim /etc/postgresql/9.1/main/pg_hba.conf
En este archivo puede configurar los modos de autenticación del cliente PostgreSQL y con que usuario puede acceder a los datos almacenados en el servidor PostgreSQL.
Para este caso de configuración usted esta conectándose localmente en el mismo servidor donde esta instalado PostgreSQL por lo cual la IP local es 127.0.0.1, entonces agregue debajo de la linea “# IPv4 local connections:” la siguiente instrucción:
host  nombre_base_datos  usuario_postgresql  127.0.0.1/32  password
Donde ‘nombre_base_datos’ y ‘usuario_postgresql’ es el nombre de la base de datos y el usuario de PostgreSQL a crear respectivamente mas adelante en este articulo.
Con estas configuraciones hechas debe reiniciar el servicio de PostgreSQL, con el siguiente comando:
# service postgresql restart
 
Configuración de acceso remoto Para dar acceso remoto a clientes PostgreSQL desde otro maquina o mascara de red distinta a la de donde esta instalado servidor PostgreSQL puede aplicar las siguientes configuraciones básicas:
Debe que cambiar el archivo de configuración del servidor PostgreSQL, con el siguiente comando:
# vim /etc/postgresql/9.1/main/postgresql.conf
Busque la linea listen_addresses = ‘localhost’ y la cambia por el siguiente:
listen_addresses = '*'
Opcionalmente usted puede simplemente unir las direcciones IP especificas a la cual da acceso de la siguiente forma:
listen_addresses='192.168.3.220 192.168.3.221'
Guarde el archivo y salga de la edición.
También debe modificar el archivo de configuración del cliente PostgreSQL, con el siguiente comando:
# vim /etc/postgresql/9.1/main/pg_hba.conf
En este archivo puede configurar desde que maquina o mascara de red puede acceder a los datos almacenados en el servidor PostgreSQL y con que usuario se puede acceder.
Para ejemplo practico que se suponga que esta en una red 192.168.1.1/16 así que quiere darle acceso a la IP 192.168.3.220, agregue debajo de la linea “# IPv4 local connections:” la siguiente instrucción:
host  nombre_base_datos  usuario_postgresql  192.168.2.3/32  md5
Donde ‘nombre_base_datos’ y ‘usuario_postgresql’ es el nombre de la base de datos y el usuario de PostgreSQL a crear respectivamente mas adelante en este articulo.
El ‘md5′ es el método de envió de la contraseña del usuario PostgreSQL por la red a comparación de la Configuración de acceso local que se define en ‘password’ la cual envía la contraseña en texto plano por la red, en la Configuración de acceso remota se configura ‘md5′ ya que envía contraseñas cifradas.
Con estas configuraciones hechas debe reiniciar el servicio del servidor PostgreSQL, con el siguiente comando:
# service postgresql restart
 
Creando usuarios Para crear usuarios vuelve a entrar como root de PostgreSQL para crear usuarios para conectarse a la base de datos, en este caso usuario ‘usuario_nomina’ con su contraseña ’123456′, con el siguiente comando:
# su postgres
postgres@nombre_maquina:/directorio$ createuser -D -S -R -l usuario_nomina
Este usuario ‘usuario_nomina’ tiene permiso para no crear base de datos, no ser super usuario, no crear roles de usuario, se le permite iniciar sesión respectivamente.
Para asignar la contraseña debe conectarse al servidor PostgreSQL, con el siguiente comando:
postgres@nombre_maquina:/directorio$ psql postgres
Esta la sesión conectado altere el usuario asignando una contraseña cifrada, con el siguiente comando:
postgres=# ALTER USER usuario_nomina WITH ENCRYPTED PASSWORD '123456';
ALTER ROLE
Para comprobar que el usuario se creo con éxito, ejecute los siguientes comandos:
postgres=# SELECT usename, passwd FROM pg_shadow;
     usename    |               passwd
----------------+-------------------------------------
     postgres   | md53175bce1d3201d16594cebf9d7eb3f9d
 usuario_nomina | md5bad743050fa6b819130855f6cbb357ee
(2 filas)
Luego salga de la sesión de base de datos, ejecutando el siguiente comando:
postgres=# \q
 
Creando base de datos Primero tiene que iniciar sesión como usuario “root” de PostgreSQL, con el siguiente comando:
# su postgres
Luego de iniciar sesión en el servidor como “root”, ahora usted puede crear una base de datos, con el siguiente comando:
postgres@nombre_maquina:/directorio$ createdb -Ttemplate0 -O usuario_nomina -EUTF-8 sistema_nomina
Esta base de datos ‘sistema_nomina’ se basa en la plantilla de base de datos llamada ‘template0′ con la cual es construida, el usuario dueño de la base de datos es el usuario ‘usuario_nomina’ previamente creado, usando el esquema de codificación de caracteres ‘UTF-8′ soportado a ser usado en esta base de datos respectivamente.
Para los privilegios del usuario ‘usuario_nomina’ en la base de datos ‘sistema_nomina’ debe conectarse al servidor PostgreSQL, ejecute el siguiente comando:
postgres@nombre_maquina:/directorio$ psql postgres
Al estar en la sesión conectado otorgue todos los privilegios al usuario ‘usuario_nomina’ en la base de datos ‘sistema_nomina’, con el siguiente comando:
postgres=# GRANT ALL PRIVILEGES ON DATABASE sistema_nomina TO usuario_nomina;
Para comprobar que la base datos esta creada, ejecute el siguiente comando:
postgres=# SELECT datname FROM pg_database;
     datname
-----------------
template0
postgres
template1
sistema_nomina
(4 filas)
Luego salga de la sesión de base de datos, ejecutando el siguiente comando:
postgres=# \q
 
Cargar estructura de datos y registros A continuación se creará una base de datos basado en un script que importa toda las sintaxis en lenguaje de definición de datos (DDL) y lenguaje de manipulación de datos (DML) en SQL para construirla, ejecute el siguiente comando:
postgres@nombre_maquina:/directorio$ psql -U postgres -f /home/macagua/script.sql
Luego salga de la sesión de usuario postgres, ejecutando el siguiente comando:
postgres@nombre_maquina:/directorio$ exit
 
Accediendo a la base de datos Una ves realizado los pasos anteriormente descritos ahora puede conectarse con el usuario ‘usuario_nomina‘ a la base de datos ‘sistema_nomina’ y para estoy existe varias formas de acceso que se describen a continuación:
 
Acceso local a la base de datos Se utiliza este forma de acceso a la base de datos cuando tiene hecha una configuración de acceso local y para esto se ejecuta el siguiente comando:
postgres@nombre_maquina:/directorio$ psql -d sistema_nomina -U usuario_nomina
Contraseña para usuario usuario_nomina:
psql (9.1.8)
Digite «help» para obtener ayuda.

sistema_nomina=> help
Está usando psql, la interfaz de línea de órdenes de PostgreSQL.
Digite: \copyright para ver los términos de distribución
       \h para ayuda de órdenes SQL
       \? para ayuda de órdenes psql
       \g o punto y coma («;») para ejecutar la consulta
       \q para salir
sistema_nomina=>
 
Acceso remoto a la base de datos Se utiliza este forma de acceso a la base de datos cuando tiene hecha una configuración de acceso remoto, a diferencia del acceso local a la base de datos en este caso tiene que indicar el ‘host’ al cual se desea conectar, para hacer esto se ejecuta el siguiente comando:
postgres@nombre_maquina:/directorio$ psql -h 10.10.29.50 -U usuario_nomina -d sistema_nomina
Contraseña para usuario usuario_nomina:
psql (9.1.8)
Digite «help» para obtener ayuda.

sistema_nomina=> help
Está usando psql, la interfaz de línea de órdenes de PostgreSQL.
Digite: \copyright para ver los términos de distribución
       \h para ayuda de órdenes SQL
       \? para ayuda de órdenes psql
       \g o punto y coma («;») para ejecutar la consulta
       \q para salir
sistema_nomina=>
Y así de esta forma ¡esta listo para trabajar con la base de datos!