Capítulo 10. Servicios

Tabla de contenidos

Generalidades
Servicios de Internet
apache
Correo
ssh
xinetd
Servicios de Ficheros y Impresión
nfs
samba
cups
Servicios de Base de Datos
mySQL
PostgreSQL

Denominamos servicios en Linux a las aplicaciones, o conjunto de ellas, que están arrancadas esperando a ser utilizadas, o llevando a cabo tareas esenciales en "background".

Al ser Linux un sistema orientado a redes una parte importante son servicios de red, que utilizan el protocolo tcp/ip. Por ser tema a parte la administración de redes sólo describiremos los servicios sin entrar en al administración.

Generalidades

Una vez que instalamos un servicio en Linux, normalmente debe ser configurado. Los servicios se deben configurar normalmente con sus parámetros de arranque, y también suele crear un fichero o un directorio en el directorio /etc.

Como el servicio será arrancado en el inicio de sistema, se suele crear un script de inicio en el directorio /etc/init.d. Es un shell script arrancable que recibe un parámetro que puede ser: start, stop, restart y status. Algunos servicios pueden tener otros parámetros, si lo ejecutamos sin parámetros nos mostrará los posibles.

  • Con start arrancamos el servicio. Este parámetro es obligatorio en cualquier script de arranque. Dependiendo el servicio que sea configurará algunas características el servicio y ejecutará un proceso que quedará como demonio (proceso en background con unas características especiales).

  • Stop nos permite parar el servicio. Si existe un proceso en background del servicio, este será retenido. Es muy habitual que el servicio cuando arranca deje un PID en un fichero, que permitirá al script localizar y matar el proceso.

  • Restart realiza una parada y luego arranca el sistema de nuevo.

  • Status nos indica si el servicio esta arrancado.

Para arrancar por ejemplo el servicio de base de datos mysql, tendríamos:

[sal]# cd /etc/init.d
[sal]# ./mysql
Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload

[sal]# ./mysql start
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.
[sal]# 

Siempre que queramos podemos ir al directorio donde se encuentra el script de arranque y ejecutarlo con el parámetro que nos interese. Pero si queremos que el servicio se arranque cuando se inicia el sistema y se pare cuando se apague o reinicie, los script tiene que estar en un directorio preparado para ello. Lo que se hace es enlazar (link) desde el directorio con el servicio en init.d. Según el directorio donde lo pongamos se arrancará en un determinado modo de arranque o se parará:

Tabla 10.1. Tabla de modos

ModoDirectorioDescripción
1/etc/rc1.dServicios que se arrancan cuando el sistema se arranca en modo de Usuario Único. No se permite conectar nada más que al root desde consola.
2/etc/rc2.dServicios que se arrancan en modo multiusuario, pero sin algunos servicios de red.
3/etc/rc3.dServicios que se arrancan en modo multiusuario, con los servicios de red arrancados, pero en modo consola, sin las X.
4/etc/rc4.dNo se suele utilizar.
5/etc/rc5.dServicios que se arrancan en modo multiusuario, con los servicios de red y X.
6/etc/rc6.dServicios que se ejecutan en parada o reinicio.

Los modos de arranque de 2 al 4 son configurables por el administrador realmente, lo descrito anterior es la recomendación, pero la configuración por defecto de las distribuciones es diferente en cada una de ellas.

El arranque de los servicios y modo, así como alguna configuración de arranque más lo realiza el proceso init que tiene el fichero de configuración /etc/inittab.

Los nombres los links en estos directorios es distinto a como están denominados en /etc/init.d, tiene una nomenclatura. La primera letra en una S cuando se llamará al servicio con el parámetro start, y una K cuando se llame con el parámetro stop. A continuación lleva el número en el que se quiere ejecutar el servicio y luego el nombre. Vemos un ejemplo:

[pcm@sal]$ cd /etc/rc2.d
[pcm@sal]$ ls -l
lrwxrwxrwx  1 root root 18 Feb 27  2004 S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx  1 root root 15 Feb 27  2004 S11klogd -> ../init.d/klogd
lrwxrwxrwx  1 root root 13 Feb 27  2004 S14ppp -> ../init.d/ppp
lrwxrwxrwx  1 root root 17 Apr 30  2004 S18portmap -> ../init.d/portmap
lrwxrwxrwx  1 root root 14 Feb 27  2004 S20apmd -> ../init.d/apmd
lrwxrwxrwx  1 root root 26 Apr 24  2005 S20clamav-freshclam -> ../init.d/clamav-freshclam
lrwxrwxrwx  1 root root 16 Feb 27  2004 S20cupsys -> ../init.d/cupsys
lrwxrwxrwx  1 root root 17 Apr 24  2005 S20dirmngr -> ../init.d/dirmngr
lrwxrwxrwx  1 root root 14 Feb 27  2004 S20exim -> ../init.d/exim
lrwxrwxrwx  1 root root 13 Mar  4  2004 S20fam -> ../init.d/fam
lrwxrwxrwx  1 root root 17 Mar  4  2004 S20hddtemp -> ../init.d/hddtemp
lrwxrwxrwx  1 root root 15 Feb 27  2004 S20inetd -> ../init.d/inetd
lrwxrwxrwx  1 root root 19 Feb 27  2004 S20linuxconf -> ../init.d/linuxconf
lrwxrwxrwx  1 root root 14 Mar  5  2004 S20lisa -> ../init.d/lisa
lrwxrwxrwx  1 root root 13 Feb 27  2004 S20lpd -> ../init.d/lpd
lrwxrwxrwx  1 root root 17 Feb 27  2004 S20makedev -> ../init.d/makedev
lrwxrwxrwx  1 root root 15 Apr 24  2005 S20mysql -> ../init.d/mysql
lrwxrwxrwx  1 root root 27 Feb 27  2004 S20nfs-kernel-server -> ../init.d/nfs-kernel-server
lrwxrwxrwx  1 root root 15 Feb 27  2004 S20samba -> ../init.d/samba
lrwxrwxrwx  1 root root 13 Feb 27  2004 S20ssh -> ../init.d/ssh
lrwxrwxrwx  1 root root 18 Apr 30  2004 S20timidity -> ../init.d/timidity
lrwxrwxrwx  1 root root 16 Feb 18 14:06 S20webmin -> ../init.d/webmin
lrwxrwxrwx  1 root root 23 Feb  3  2006 S20wpasupplicant -> ../init.d/wpasupplicant
lrwxrwxrwx  1 root root 20 Mar  4  2004 S21nfs-common -> ../init.d/nfs-common
lrwxrwxrwx  1 root root 18 Oct 24  2004 S21quotarpc -> ../init.d/quotarpc
lrwxrwxrwx  1 root root 17 Feb 29  2004 S21sensord -> ../init.d/sensord
lrwxrwxrwx  1 root root 15 Apr 24  2005 S50pcscd -> ../init.d/pcscd
lrwxrwxrwx  1 root root 24 Aug 24  2005 S85vpnclient_init -> ../init.d/vpnclient_init
lrwxrwxrwx  1 root root 13 Feb 27  2004 S89atd -> ../init.d/atd
lrwxrwxrwx  1 root root 14 Feb 27  2004 S89cron -> ../init.d/cron
lrwxrwxrwx  1 root root 16 Feb 27  2004 S91apache -> ../init.d/apache
lrwxrwxrwx  1 root root 15 Mar  4  2004 S98local -> ../init.d/local
lrwxrwxrwx  1 root root 13 Feb 27  2004 S99kdm -> ../init.d/kdm
lrwxrwxrwx  1 root root 19 Feb 27  2004 S99rmnologin -> ../init.d/rmnologin
lrwxrwxrwx  1 root root 23 Mar  4  2004 S99stop-bootlogd -> ../init.d/stop-bootlogd
[pcm@sal]$