Qué son los ficheros FIFO

FIFO es el acrónimo de First Input First Output (Primero que entra, primero que sale). En informática se suele utilizar para crear estructuras de datos.

Usando esta teoría, en UNIX existen una especie de ficheros que se utilizan para comunicar procesos, de modo que se puedan sincronizar e intercambiar información. El funcionamiento es bastante sencillo, un proceso se  encarga de escribir en el fichero FIFO, y otro de leer. Cada uno de los procesos se quedarán bloqueados hasta que el otro actúe.

Esto lo podemos probar del siguiente modo:

$ mkfifo /tmp/fi

Con el comando anterior, habrás creado el fichero FIFO. Puedes comprobarlo con un ls -l /tmp

$ echo Hola Mundo > /tmp/fi

El proceso que hemos lanzado, se quedará bloqueado intentando escribir hasta que haya otro proceso lea ese fichero. Para ello lanzamos este comando:

$ cat /tmp/fi
Hola Mundo

En este momento, habrán quedado ambos procesos desbloqueados.

lsof (List Open Files)

Ya hice una pequeña introducción de lsof, pero se merece una entrada completa. Se trata de una de las herramientas más útiles para administrar un sistema basado en Unix. El nombre de lsof viene de Lists Open files y nos puede dar toda la información que necesitamos acerca de los descriptores que tiene el sistema en un momento determinado. Entiéndase descriptores, tanto las conexiones de red, como descriptores de ficheros.

Los usos más interesantes son los siguientes:

  • lsof -i :80: Muestra información acerca de los procesos que están en estado LISTEN en el puerto 80.
  • lsof -iTCP: Muestra las conexiones TCP.
  • lsof  +D /home/usuario: Muestra qué procesos están utilizando el directorio /home/usuario.
  • lsof -u usuario: Muestra los descriptores de fichero abiertos por el usuario.
  • lsof -i@192.168.1.5: Muestra conexiones con una determinada IP.
  • lsof -i@192.168.1.5:2322: Muestra conexiones con una determinada IP y un determinado puerto.
  • lsof -c httpd: Muestra los ficheros y conexiones tiene abiertas un proceso determinado, dado el nombre del proceso.
  • lsof -p 12212: Muestra los descriptores de fichero asociados a un proceso, dado su PID.
  • kill -HUP `lsof -t -c sshd`: Enviaría una señal a los procesos que estén corriendo de sshd.
  • lsof +L1: Muestra los ficheros que tienen menos de un enlace apuntando a ellos. Suelen ser ficheros que un cracker intenta ocultar.

Fuente: lsof, lsof 2

Crear BBDD en MySQL, y dar permisos a un usuario

Para crear una base de datos en mysql se utiliza la siguiente sentencia:

mysql> CREATE DATABASE NombreBaseDeDatos;

Para dar permisos a un usuario para que use la base de datos, se utiliza el siguiente comando:

mysql> GRANT ALL ON NombreBaseDeDatos.* TO el_usuario@localhost IDENTIFIED BY "la_password";
mysql> FLUSH privileges;

También hay más formas de hacerlo:

# mysql -u root -p
mysql> CREATE DATABASE moodle;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
mysql> quit
# mysqladmin -p reload

La diferencia es que la primera forma da todos los privilegios al usuario, y en la segunda se va especificando uno a uno los privilegios que le quieres dar al usuario sobre la BBDD. Además en la primera se aplican los cambios con la sentencia flush y en la segunda con un reload de la BBDD.

Autenticación web con Apache

Para realizarla autenticaciónde usuarios a través de Apache, hay que añadir las siguientes directivas en el fichero de configuración de Apache (por defecto /etc/httpd/httpd.conf).

<Files "mailgraph.cgi">
AuthUserFile /var/www/mailgraph/.htpasswd
AuthName "Mailgraph"
AuthType Basic
require valid-user
</Files>

Con esto se consigue que se compruebe el usuario al acceder al fichero «mailgraph.cgi» en función de los usuarios provisionados en el fichero /var/www/mailgraph/.htpasswd

Para provisionar usuarios en este fichero, se utiliza el siguiente comando:

/usr/sbin/htpasswd /usr/share/mailgraph/.htpasswd nombreUsuario

Warning en postfix

Hoy he visto el warning.log que genera Postfix, y me he encontrado la siguiente línea:

Sep  1 01:30:49 apaair postfix/smtpd[23271]: warning: database /etc/postfix/aliases.db is older than source file /etc/postfix/aliases

Esto indica que se ha actualizado el fichero /etc/postfix/aliases y no se ha actualizado un base de datos que utiliza Postfix.

Para solucionarlo, basta con ejecutar lo siguiente:

postalias /etc/postfix/aliases

Instalar Latex en Ubuntu

Para instalar LaTeX en tu Ubuntu, debes de instalar los siguientes paquetes:

sudo apt-get install texlive-latex-base

si necesitáis más paquetes para LaTeX como ifpdf, podéis instalarlo así:

sudo apt-get install texlive-latex-recommended

Para instalar la fuente marvosym tienes que instalar lo siguiente:

sudo apt-get install ttf-marvosym

Para instalar el paquete ldesc2e.sty, primero nos debemos descargar el fichero, y luego guardarlo en el siguiente directorio:

/usr/share/texmf-texlive/tex/latex/ldesc2e

/usr/share/texlive/texmf/tex/latex/ldesc2e

para que se guarden los cambios, ejecutaremos

sudo texhash

Manual para instalación

Y para posteriormente crear ficheros en PDF, te puede ayudar este documento.

Configurar Ubuntu

Primero, instalamos las aplicaciones necesarias, para ello quizás tengamos que añadir estas líneas en el fichero /etc/sources.list:

deb http://archive.ubuntu.com/ubuntu/ hardy main universe multiverse restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy main universe multiverse restricted

ó simplemente con actualizar los repositorios a través de apt-get valdría:

sudo apt-get update

ahora ya podemos instalar las aplicaciones:

sudo aptitude install thunderbird ssh wireshark vim-full tilda htop screenlets netspeed sensors-applet samba traceroute unrar

También sería interesante habilitar la cuenta de root.