Está en la página 1de 21

Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005.

Guía de administración de
servidores Gnu/Linux.

Copyright (c) 2006 Antonio Becerro Martinez.


Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005.

1. INSTALACION DE DEBIAN GNU/LINUX.

En primer lugar, vamos a realizar una instalación de Debian en un Pc. La versión que vamos a utilizar, es Woody
release 4. Si el ordenador tiene instalado previamente otro sistema operativo como Microsoft Windows, lo
conservaremos intacto en su partición. Introducimos nuestro CD­Rom de Debian, y arrancamos el equipo, poniendo
especial cuidado en que la Bios esté configurada para arrancar un CD­Rom de instalación. Normalmente, solo habrá que
situar como dispositivo de arranque primario el CD­Rom, en lugar del disco duro. Los ajustes de la Bios, se inician pulsando
la tecla Supr, durante el arranque del ordenador. El apartado que necesitamos modificar se suele llamar: boot loader o
algo similar. En todo caso, ello depende de la marca y versión de la Bios que tengamos. Hecho esto, se inicia el programa
de instalación de Debian. Pulsamos F3, en el menú que aparece a continuación elegimos el kernel 2.4, y seguimos
todos los pasos de la instalación (idioma, teclado, etc). Creamos solamente dos particiones, una para la memoria de
intercambio (swap), y otra para el sistema. Dos particiones es lo mínimo para un sistema Gnu/Linux, aunque podemos
añadir las que queramos. Es muy habitual una partición /users, para los usuarios, o /home, o lo que queramos. /var y /
data, son particiones habituales, en muchos servidores. Formateamos las particiones nuevas y les asignamos los puntos de
montaje adecuados. A continuación escogemos: instalar el nucleo y los módulos. Habitualmente, en el caso de un
Pc, con componentes comunes, no necesitaremos instalar controladores de dispositivos adicionales. En estos casos, el
kernel dispone de suficiente información para manejar el hardware por si mismo. Cuando llegamos al apartado de elegir
DHCP o BOOTP, no instalamos ni uno ni otro. Un servidor DHCP, es aquél que nos asigna una IP dentro del rango que
tenga disponible. Es una forma de conectarse a internet pŕacticamente autómatica. BOOTP es un método diferente,
apropiado en algunos casos concretos (como los Clusters). La tarjeta de red, hace un broadcasting (una llamada en busca
de servidores disponibles), y se autoconfigura. Así que, si instalamos el servidor BOOTP en una máquina, el resto de
máquinas se conectarán solas. Nosotros no vamos a utilizar ni DHCP, ni BOOTP, sino que vamos a configurar
manualmente nuestros datos de red. En nuestro caso son los siguientes:

IP: 192.168.0.209
Máscara: 255.255.255.0
Dominio: hileras.net
Pasarela: 192.168.0.100
DNS: 192.168.0.254
192.168.1.100
192.168.1.101
nombre: aula9
Pass: nodo50
Dirección: aula9.hileras.net

Ahora, se instala el sistema base. Después escogemos hacer el sistema arracable (Lilo). No hacemos disco de arranque.
No es necesario, ya que siempre podemos utilizar el disco de instalación de Debian, y llegar hasta el punto de la instalación
que nos interese, para hacer algún cambio, sin realizar ninguna otra modificación. Más tarde, nos pregunta si queremos
utilizar GMT. Decimos que sí. Es la hora del meridiano de referencia, que se encuentra en el Reino Unido. Como algoritmo
de encriptación de contraseñas, elegimos md5 en lugar de Des, un algoritmo más antiguo. Nos va a aparecer, un mensaje
acerca de los peligros de utilizar NIS (sistema de contraseñas no locales). Es solo una nota informativa. No hay ningún error
en la instalación. Ante la pregunta: Shadows password, respondemos Yes. Es más seguro. Esto es, que las
contraseñas en lugar de guardarse en la carpeta: /etc/password (que es un directorio accesible a todo el mundo) se
guarden en: /etc/shadow, que es un directorio accesible solo por el root. Naturalmente, las contraseñas van encriptadas,
en cualquier caso.
En el siguiente paso, cuando nos pregunta si queremos instalar los paquetes Pcmcia le decimos que no, ya que no
estamos realizando la instalación en un portátil. Ahora vamos a pasar a una parte de la instalación muy importante: la
configuración de Apt. Este es el programa que gestiona los paquetes en Debian. Es el mejor gestor de paquetes de todas
las distribuciones Gnu/Linux. Apt puede buscar, instalar y resolver las dependencias de cualquier paquete .deb
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005.

e incluso de código fuente, desde múltiples repositorios. Es cómodo de utilizar, robusto y muy capáz. El enfoque que hace
Debian de este programa es peculiar. Como apt es muy fléxible, la instalación de Debian es minimalista (instalación
base). Se instala lo esencial para funcionar, se configura apt, y el resto ya se instalara más tarde, a medida que sea
necesario. Mediante el comando: apt-setup vuelven a salir las pantallas de configuración de apt, en caso de que
queramos volver a configurarlo. Escogemos como medio de instalación ftp, como servidor ftp: ftp.rediris.com y como
país Spain (es). Para instalar paquetes en Debian hay muchos métodos. Veamos algunos;

-apt -tar.gz -tasksel -apkg -dselect

No obstante, la herramienta que más se suele utilizar es apt. En este curso vamos a utilizar preferentemente apt. En
cualquier caso, en el siguiente paso de la instalación de Debian, va a aparecer tasksel. Este es un programa de
instalación de paquetes, que muestra un menú, con todos los paquetes agrupados dentro de categorias más o menos
genéricas, como X windows system o Desktop environment. Si escogemos cualquiera de estas, tasksel instalará todos los
paquetes asociados a la categoria seleccionada. tasksel puede ser ejecutado en cualquier momento desde una shell,
mediante el comando: tasksel. En nuestro caso, escogemos: X windows system y Desktop environment, así como tcl­tk
(conjunto de librerias gráficas esenciales para muchos programas. (Permiten, por ejemplo, configurar el kernel en modo
gráfico.)
Seguimos adelante. El instalador nos va a preguntar si queremos instalar exim, el gestor de correo por defecto, en
Debian. Le decimos que no. Ahora llega el momento de configurar el sistema gráfico. Se utiliza el siguiente comando:

dpkg-reconfigure xserver-xfree86

El comando dpkg-reconfigure sirve para volver a configurar cualquier paquete en Debian. Durante esta parte,
tenemos que escoger el monitor, la tarjeta gráfica, el ratón, el teclado, y cualquier otro periférico que tengamos.
Naturalmente, tendremos que conocer nuestro hardware de antemano. El hardware estandar no presentará ningún problema.
Si tenemos algún periférico especial, puede ser que tengamos que trabajar algo más. Hecho esto, nuestra flamante
distribución Debian estará completamente instalada.

Veamos ahora un listado de comandos para el gestor de paquetes apt:

apt­get install paquete # Instala paquete.


apt­cache search cadena de caracteres # busca paquetes.
apt­get update # Actualiza la lista de paquetes.
apt­cache show paquete # Descripción máxima de paquete.
apt­cache depends paquete # Muestra dependencias.
apt­get install /testing # Cambio a la rama testing.
apt­get install /unstable # Cambio a la rama inestable.
apt­get remove paquete # Borra paquete. Deja ficheros de configuración.
apt­get remove –purge paquete # Borra paquete y fichero de configuración.
apt­get upgrade paquete # Actualiza paquete.
apt­get dist­upgrade paquete # Actualiza todos los paquetes de la distro.
apt­get source paquete # Descargar código fuente.
apt­get ­b source paquete # Descargar fuente y compilarlo automáticamente
apt­get autoclean paquete # Elimina versiones anteriores.

Nota
more y less, son paginadores. Sirven para mostrar el contenido de un fichero en el monitor,
en forma de pantallas sucesivas. Muy útil para visualizar documentos grandes.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005.

Nota
El pid, es el número de un proceso. Es el resultado de unir p (proceso) e id (identificador).

Por último, vamos a hacer unos test a nuestros medios de instalación, en este caso servidores ftp. El programa que vamos
a utilizar se llama: netselect. En primer lugar, hay que instalarlo mediante apt. Vamos a poner a prueba los siguientes
servidores:
ftp.rediris.es
ftp.lnux.co.uk
ftp.sunet.se
ftp.debian.org

El programa netselect, devuelve un valor numérico de cada servidor. El número más bajo, indica una respuesta más
rápida por parte del servidor. Es interesante saber cual va mejor, para poder instalar los paquetes que nos interesen, de
forma lo más rápida posible.

2. APACHE

El servidor apache, es seguramente el programa de software libre más conocido. Su éxito, radica en su robustez, y su
capacidad para soportar una enorme cantidad de características en forma de módulos. Su extensa API, permite a los
desarrolladores ampliar sus capacidades para hacer casi cualquier cosa. Nosotros vamos a instalar la versión 1 de Apache.
Existe versión 2, pero todavía no se considera lo bastante estable, en entornos de producción. Utilizaremos un módulo
adicional de encriptación llamado ssl. De modo, que la versión se llama: apache-ssl.
En primer lugar, instalamos el programa mediante: apt-get install apache-ssl El programa de instalación nos va a
hacer un par de preguntas: Server Name y Email Address. La primera es la identificación de nuestro equipo. En
nuestro caso: aula9.hileras.net. Como dirección de correo no ponemos nada. Los ficheros de configuración de Debian se
encuentran en: /etc y los de Apache-ssl en: /etc/apache-ssl El archivo de configuración tiene el siguiente nombre:

httpd.conf

Todo lo que hay que hacer para configurar Apache-ssl, es editar este fichero mediante un editor de textos. Podemos
utilizar cualquiera de estos: emacs, xemacs, kate, etc si nos defendemos bien en modo de texto, emacs es el mejor
editor, es extensible, configurable y está completamente autodocumentado. El fichero httpd.conf, está muy comentado.
Solo están activas las lineas que no empiezan por el carácter:#, el resto son comentarios. Podemos escribir nuestros propios
comentarios añadiendo lineas precedidadas por: #. Primero hacemos una copia del fichero original httpd.conf. Con
guardarlo con otra extensión es suficiente. Cada vez que hagamos un cambio, hay que parar y arrancar el servidor Apache.
Estos son los comandos:

apache -sslctl stop # para Apache­ssl


apache -sslctl start # arranca Apache­ssl
apache -sslctl restart # para y arranca Apache­ssl

Lo mínimo que hay que hacer para tener un servidor Apache funcionando es eliminar el carácter # (comentario) a la linea: /
ServerName, y sustituir ServerName por el nombre de nuestro servidor. En este caso queda: /aula9.hileras.net
Para comprobar su funcionamiento paramos y arrancamos el servidor apache, y en un navegador de internet, tecleamos esta
url:
https://aula9.hileras.net
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005.

Si en lugar de https, escribimos http, no funciona. Por el momento, el puerto 80 no está abierto (puerto estandar para
servidores http) por motivos de seguridad. La página web que aparece en el navegador se llama: index.html, y su ruta es: /
etc/www, nosotros podremos crear carpetas nuevas dentro del directorio /etc/www para nuestras páginas web. Si creamos
una carpeta llamada, por ejemplo: empresa1, entonces, la url será: https://empresa1/aula9.hileras.net. Apache-
ssl, asume que la web de inicio de cualquier sitio web debe llamarse: index.html. Como se ve, la instalación y configuración
básica de Apache-ssl, no es nada difícil.

En principio, parece buena idea personalizar la página de inicio de nuestro servidor. Podemos hacerlo en el editor de texto
que estemos utilizando, o ejecutar un editor de html, como Quanta o Bluefish. Ahora, vamos a ver con un poco más de
detenimiento el fichero de configuración de Apache: httpd.conf.
Los apartados más importantes a tener en cuenta son las siguientes lineas:

Servertype standalone # arranca por ti mismo.


Si se desea, se puede hacer que el demonio inetd
arranque el Apache. Ventaja: es cómodo porque en
el inicio de los servicios de red se tiene Apache activo.
Desventaja: si inetd falla, Apache también y viceversa.

ServerRoot # ficheros de configuración.

Timeout 300 # 300 sg. (5 minutos). Tiempo máximo


de una conexión. Si durante 300 sg. el usuario no hace
nada, Apache le desconecta. La idea es no perder ancho
de banda en conexiónes acabadas.

StartServers 5 # 5 procesos hijos en cola, como


máximo. Es decir, 5 usuarios.

MaxClients 150 # 150 usuarios simultáneos, como


máximo.

Listen # Es el puerto. Para http normalmente


es el 80. https utiliza el 443. https es un protocolo para
conexiones seguras o encriptadas.

DocumentRoot # Es la ruta a los archivos de las


páginas Web. Por defecto /etc/www

Errorlog # Es la ruta al fichero de errores. Por defecto


/var/log/apache­ssl/error.log Hay 7 niveles de información
de error, según su importancia: debug, info, notice, warn,
error, crit, alert y emerg.

Vamos a ver ahora los enlaces directos o Alias. estos, sirven para que un usuario teclee en la url de la página, a
continuación del dominio de nuestro servidor, el nombre de un directorio y que se le muestre otro diferente. El que nosotros
hayamos definido. ¿Para que sirve? Veamos un ejemplo. Supongamos que queremos que los usuarios de nuestro servidor
puedan ver el contenido del directorio: /etc. Entonces, para hacer un alias escribimos:

Alias /configuracion /etc


Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

El usuario se conecta a la url: https//aula9.hileras.net/configuración y el navegador le muestra el contenido de /


etc. Esta técnica, puede servir para hacer una especie de rudimentario servidor de descarga de ficheros, al estilo ftp. En
una carpeta ponemos los ficheros a descargar, hacemos el alias, y cuando los usuarios se conecten podrán descargarse los
ficheros. Los Alias se
escriben en el fichero httpd.conf.

Nota
El propietario de Apache (por así decirlo el administrador) es el usuario: www­data, del
grupo www­data, por motivos de seguridad.

Ahora vamos a hacer un directorio privado accesible mediante login y password (usuario y contraseña) desde un
navegador de internet. El comando para esta acción es:

htpasswd -c ruta a directorio

Entonces, el sistema te pide que le proporciones una contraseña, y que la confirmes escribiendola de nuevo. Esto, genera
en el directorio propuesto, un fichero llamado: .htaccess.
Este fichero está oculto (todos los ficheros precedidos por un punto lo están en Unix). No obstante es editable en un editor
de texto como vi. Veamos que contiene:
AuthName "Directorio privado"
AuthType Basic
AuthUserFile /etc/apache-ssl/htpasswd
require user antonio

La primera linea simplemente es el nombre. La segunda el tipo de restricción que se va a aplicar, en este caso: Basic. La
tercera linea indica la ruta al directorio al cual queramos aplicar las restricciones. Finalmente, la última linea es el nombre del
usuario, en este caso antonio. Si queremos crear otro usuario, simplemente cambiamos antonio por joseba. El fichero .
htaccess siempre tiene que estar en el directorio al cual se aplican las restricciones.

Veamos, a continuación, como crear un Virtual Host. Esto se traduce por alojamiento virtual. La mejor manera de
entenderlo es mediante un ejemplo. Unos amigos quieren alojar en nuestro servidor su web. Si hiciesemos una carpeta
nueva para ellos en /etc/www, técnicamente estaría resuelto. Sin embargo, nuestros amigos tienen su propio dominio, y
quieren que sea este, y no el nuestro el que se visualice en la url de su página. Lo que hay que hacer, es una redirección.
Los usuarios que se conecten a su dominio, realmente se tienen que conectar a nuestra máquina. Lo primero que hay que
saber, es que el Virtual Host hereda los parámetros de configuración generales. Realicemos un ejemplo. Lo primero,
editamos httpd.conf, y añadimos el siguiente contenido:

<VirtualHost 192.168.0.209:80> # mi servidor


ServerName www.miempresa.com # url del cliente
SSLDisable # modulo de seguridad. Apagado.
DocumentRoot /var/miempresa # ruta a documento html
</VirtualHost>

Hecho esto, cuando los usuarios se conecten a: http://www.miempresa.com, realmente apache mostrara el
contenido de: /var/miempresa.

Apache, tiene capacidad para hacer muchas otras cosas, mediante módulos. Estos son fragmentos de código que añaden
funcionalidades nuevas. Veamos un ejemplo:
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

mod_speling # Cuando un usuario comete un error ortográfico, presenta una lista con las
las opciones correctas más similares.

Para aplicar este modulo, editamos el fichero: httpd.conf, buscamos la linea mod_speling, borramos el carácter: #, y
añadimos: CheckSpelling On. Queda así:

LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so


CheckSpelling On

Si ahora hacemos una prueba, veremos el resultado. La forma más sencilla es cometer un error a propósito. Por ejemplo,
escribimos: http://aula9.hileras.net/indexe (en lugar de: index). Existen muchos más módulos para hacer otras cosas. Se
utilizan de la misma forma.

Bien. Ya tenemos un servidor Apache funcionando, hemos alojado varios sitios Web, instalado módulos. Ahora,
necesitamos saber si nuestro servidor está dando un buen servicio. ¿Es lo bastante rápido? ¿Soporta bien un número alto de
conexiones simultaneas? ¿Sufren los usuarios demoras a la hora de visualizar los sitios que alojamos? Para poder responder
a estas preguntas, es necesario instalar algunos programas especializados en test de rendimiento. Un buen progra­
ma es: httperf Se utiliza así:

httperf –hog –server aula9.hileras.net –num-conn 5000 # El número del final es opcional.
En este caso 5000 conexiones. Podemos poner lo que queramos hasta hundir el Servidor.

Apache no es fácil de hundir. Es un Servidor muy robusto. Veamos otro programa, esta vez en modo gráfico:
Kdesystemguard (es decir, el guardián de Kde). Puede mostrar mediante varios tipos de gráficas, el estado de la
máquina en tiempo real. Es decir, que se va actualizando sobre la marcha. Las conexiones simuladas lanzadas por httperf,
han tenido una repercusión en en el rendimiento del ordenador: procesador, memoria, etc. Con Kdesystemguard, lo
podemos ver. Es buena idea ejecutar al mismo tiempo httperf en una consola, cambiando el número de conexiones y ver
como esto afecta al sistema. El parámetro –timeout número, comprueba el tiempo de respuesta. Mediante este método,
emulamos conexiones al puerto 80 (http), si añadimos el parámetro –port443, hace lo mismo en el puerto 443. El
parámetro –ssl es para utilizar encriptación, en la simulación. Este último parámetro, obliga a Apache a un esfuerzo
notablemente superior. Veamos una posibilidad más sofisticada:

--wsess=24,6,4
Esto quiere decir: simula 24 conexiones, en bloques de 6, cada 4 segundos.

Este parámetro rompe la linealidad. Con anterioridad, el número de conexiones, ya fueran un número muy alto o muy bajo,
se llevaban a cabo de una en una. --wsess permite conexiones simultaneas, lo cual es muy interesante, pues podremos
comprobar la capacidad de nuestro servidor ante una situación, mucho más cercana a la realidad. De este modo, a medida
que aumentemos el número, podremos saber los límites de nuestra máquina. Estas pruebas, son esenciales, ya que de lo
contrario no podríamos configurar Apache de una forma apropiada. Es imprescindible saber lo que nuestra máquina
aguanta, para editar el fichero: httpd.conf en función de nuestras necesidades específicas.

Con Kdesystemguard, podíamos ver unas gráficas de rendimiento de la máquina. Esto esta bien. Pero seria mucho
más interesante disponer de unos informes, con la información concreta de cada conexión (hora, usuario, etc). Para esto se
utilizan estos dos programas:
webalizer
analog

Webalizer y analog, nos informan de las conexiones recibidas. Los datos de estos programas suelen ser: IP / hora /
navegador. Webalizer los presenta en formato html, en color, con gráficos y demás. analog posee un frontend llamado:
fanalog.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Los accesos que nos van a aparecer en los informes de webalicer y analog, son las peticiones que hicimos previamente con
httperf.

Nota
webalizer da un error con Apache­ssl. Hay que editar su fichero de configuración en /etc y
modificarlo cambiando el nombre apache, por apache­ssl.

Nota
En Unix, las extensiones de los archivos son meramente informativas. El comando file sirve
para saber de que tipo es un archivo. No es obligatorio poner extensión a los ficheros.

3. SHELL SCRIPT.

La shell, es el intérprete de comandos de la mayoría de los sistemas Unix o similares a Unix. Un script es un guión,
es decir una serie de instrucciones para la consola guardado en un fichero de texto de extensión: .sh. En Gnu/Linux, esta
técnica alcanza el nivel de un lenguaje de programación. Para los administradores de Servidores, los scripts son
herramientas muy útiles. Permiten hacer tareas de una forma muy productiva, ejecutar aplicaciones cuando se desee,
mediante el demonio crontab, etc. Incluso el sistema operativo se inicia gracias a un script (initd).
Este capítulo, se divide en tres secciones:

1­ Comandos.
2­ Generación de Script.
3­ Ejecución de programas con periodicidad (crontab).
En esta parte también estudiaremos los scripts de arranque.

3. 1. COMANDOS.

touch fichero # crea fichero vacío.


ls -la # lista todos los ficheros detalladamente.
-lat # lista todos los ficheros por fechas.
-latr # invierte ordenación.
-l # Detalles.
mkdir # crea directorio.
rmdir # borra directorio.
cp # copia directorio.
mv # renombra y mueve simultaneamente.
rm # borra directorios vacios.
rm -r # borra directorios llenos.
cat fichero # /head presenta fichero. (con head las 15 primeras)
more fichero # paginar fichero.
tail -f fichero # ver finál de fichero y los cambios que pueda haber
en tiempo real.
echo # devuelve lo que se escribe.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

ls / wc # se usa -c (caracteres) -w (palabras) -l (lineas).


lista / y muestra palabras y caracteres.
cat # cuenta. Con -head cuenta la cabecera
Con -grep + cadena de caracteres, filtra.

grep + cadena de caracteres # filtra la cadena de caracteres indicada.


grep -r "ServerName" /etc # busca recursivamente ServerName en: /etc
grep -i cadena de caracteres # busca cadena de caracteres y no tengas en
cuenta mayúsculas y minúsculas (-i).

who # quién es el usuario (conectado).


w # quien es el usuario.
last # los últimos usuarios (estén o no conectados).
lastlog # listado de usuarios y fechas de las última
entrada de cada uno.
date # fecha.
top # procesos y estado de la máquina.
ps # procesos activos.
ps aux # todos los procesos
ps aux | grep "apache" | grep -v "grep" |wc
# muestra todos los procesos | filtra apache | selecciona todos menos apache | muestra palabra y
número.
kill+Nº proceso # mata proceso.
kill -9 Nº proceso # mata procesos resistentes.
file # tipo de fichero
tar donde que # empaqueta fichero.
tar -cf fichero.tar /etc # desempaqueta fichero.tar en: /etc
gzip -9 fichero fichero.gz # comprimir. -9 máxima compresión.
gunzip # descomprimir.
gzip -d # descomprimir.
tar cvzf destino.tgz origen # crear un targz (tarball).
tar xvzf origen.tgz destino # descomprimir.

3. 2. SHELL SCRIPT.

Los scripts empiezan por una linea de este tipo:


#! / bin / bash

hora =`date +%H:%M` # hora en formato: 20:29


conectados=`who | wc -l`
echo "A las" $hora "hay" $conectados
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Los permisos:

-|rw-|r--|r--|
tipo dueño grupo todos

Dos formas de cambiar los permisos: numérica y alfabética. Se hace con un número de 3 cifras. la primera es el dueño, la
segunda el grupo y la tercera son todos. Va de 1 a 7. 4 es lectura (r), 2 es es escritura(w) y 1 es ejecución (x). 750 es:
máximo para el dueño (7, resultado de 4+2+1, 5 para el grupo, y 0 para todos los demás) El comando para dar los máximos
permisos al usuario es:

chmod 750 prueba1.sh

chown jorge fichero # cambia los permisos de un fichero al


usuario jorge.

chown jorge:hileras fichero # cambia un fichero a un usuario y además


lo cambia de grupo.

3. 3. REDIRECCIONES.

Esto es, no imprimir en la pantalla sino en la impresora, o en un fichero.

ls 1> listado.txt
salida estandard

ls 1> listado.txt 2>errores.txt


pasa el fichero listado.txt con el nombre errores.txt donde le digamos.

ls 1> listado.txt 2>>errores.txt


pasa el fichero listado.txt con el nombre errores.txt donde le digamos
añadiendo más texto en la salida.

grep "ServerName" /etc 2>/dev/null


filtra "ServerName" y redireccionalo al agujero negro.
/dev/null es un directorio donde todo lo que se envia desaparece.
Por eso, lo de agujero negro.

Ahora, vamos a escribir el siguiente shell script, que guardaremos con el


nombre: prueba2.sh
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

for i in `ls /etc`; do


wc /etc/$i
done

prueba2, lo que hace es listar todos los ficheros dentro de /etc y luego
cuenta el número de palabras que tenga. Antes de ejecutarlo, es preciso
concederle todos los permisos.

prueba3 Lo que pretendemos hacer con este script es capturar todos los
procesos apache, seleccionar los que tengan el número de un usuario y
matarlos. Dicho de otro modo, queremos expulsar a un usuario de apache.
Veamos:

ps aux | grep "apache"


Si con el script prueba2 lo intentamos cambiando wc por kill no lo lograremos

ps aux | grep "apache" | awk '{print $2}' $0 # toda la linea


selecciona la segunda columna (desde la izquierda) y lo imprime en la pantalla.

ps aux | grep "apache" | awk '{print "kill -9 " $2}' | sh


selecciona la segunda columna y mata los procesos apache

cat /etc/passwd | awk -F: '{print $1}'


busca todos los usuarios* e imprime la primera columna.
* están en el fichero passwd

Vamos a ver ahora si un usuario está conectado. Utilizaremos if

> if [`who | grep "root"`]; then


echo "root esta conectado";
else
echo "root no esta conectado"fi

nice # es el comando para dar prioridades.


renice # es el comando para dar prioridades en marcha.
Parámetros:
-20 # mayor prioridad.
0 # normal.
19 # menor prioridad.

top # ver procesos. La tercera columna es la prioridad.

Nota
El comando: wget, se utiliza para buscar mirrors.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

3. 4. EL DEMONIO CRONTAB.

cron / crontab # demonio para periodicidad de tareas.

crontab -l # ver tareas del usuario.

crontab -u ususario -l # ver tareas del ususario que se desee.

crontab -e # editar fichero de configuración de tareas.

Estructura del fichero de configuracion de cron


CUANDO QUE COSA> programa, script, comando...
min Horas Dia mes dia (semana)
0-59 0-23 1-31 -12 0-7 (7 y 0 es lo mismo)
ejemplo 0 12 3 * *

ejemplo 0,3 0,4,5 * * *

* significa cualquiera o mejor dicho todos.

Cron funciona continuamente. Se puede parar o arrancar pero no es necesario.


El script de arranque se encuentra en: /etc/init. También existe un script para
cron.
Ejercicio.
Almacenar en un archivo todos los procesos y guardarlos en un fichero.
Luego eliminar el fichero.

ps aux | wc -1 >> /root/process 2>/dev/null


***** ps aux | wc -l >>/root/process 2>/dev/null

tail -f process
busca las últimas lineas de un fichero hasta que cambie. Con la f es dinámico.
como el fichero process es la salida de cron, tail nos mostrara los procesos
presentes en el sistema. Se actualiza cada segundo. -f cd /root

Nota
du disk usage # ver memoria. du fichero # ver memoria de fichero.
du -h # ver en modo humano.

Ejercicio.
crear un script que se ejecute al arrancar la maquina.
echo
echo
echo GNU/LINUX EL SISTEMA OPERATIVO LIBRE.
lo guardamos en /etc/initd con el nombre arranque.sh
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

pero no vale solamente con esto. Hay que escribir también:


update-rc.d arranque.sh defaults para que funcione.
update-rc.d -f arranque.sh remove para que no funcione.

ls |tee listado.txt # a la vez que vemos el listado nos lo imprime en un


fichero llamado listado.txt (que se crea automáticamente)

more .bash_history # ver con el paginador more el fichero de historia


de la shell. Hay uno para cada usuario.

more .bashrc # ver con el paginador el fichero de configuracion de la bash.

cat /etc/motd # ver mensaje del dia.

find donde criterios # busquedas según diferentes criterios.

find / -name"

contr+c # detener busqueda

find /etc/ -name "http*" # busca algo que empieza por http en /etc
el criterio es nombres. Se puede cambiar. Veamos utilizando como criterio el
tamaño.

find /etc/ -size +1000k # busca los ficheros que tengan mas de 1000 K.

find /etc/ -size +1000k -name "antoniux" se puede hacer busquedas


con varios criterios al mismo tiempo.

find / -mmin -5 # busca los ficheros ejecutados en los últimos 5 minutos.

find / -size +100K -exec ls -l {} \;


este significa que lo haga con los resultados

Nota
Microsoft Windows puede hacer todo esto. Sin embargo, find llega un poco más lejos, pues
permite hacer las busquedas y realizar, al mismo tiempo, alguna acción con los ficheros en­
contrados.

Nota
tee # ver y guardar una salida simultáneamente.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

4. SEGURIDAD.

Supongamos que se nos olvida la contraseña del root. ¿Como podemos entrar en el sistema?
¿Existe una puerta trasera? Sin duda, se trata de un agujero de seguridad, pero esta puerta existe. Posiblemente, existe
también en todos los sistemas operativos. Es práctico, porque nos soluciona un problema, pero es peligroso, porque
cualquiera que tenga acceso físico a nuestra máquina puede hacerse con el control total del sistema. Veamos como se hace.
Durante el arranque del Lilo, introducimos la siguiente linea:

init = /bin/bash rw
arranca bash con permisos lectura y escritura.

Esto arranca en modo texto. Lo primero que hacemos, es una copia del fichero de contraseñas:

cp /etc/shadow /root/shadow

A continuación, editamos el fichero etc/shadow con un editor de texto como emacs. Hay que borrar el segundo
campo. El primero es: root. El segundo es la contraseña. guardamos el fichero de contraseñas sobreescribiendo el antiguo.
Ejecutamos el comando: sync (sincronizar) para que el sistema ejecute los cambios de forma inmediata. Ahora solo
tenemos que reiniciar el ordenador normalmente. Cuando introducimos el login, veremos que se salta la contraseña y entra
en el sistema. Para restablecer la normalidad, deberíamos saber cual era nuestra contraseña. Para ello, vamos a utilizar un
programa que se llama: john. Este, busca contraseñas, listandolas contra un diccionario interno del programa. Este, es
bastante básico, pero se puede cambiar por muchos otros que circulan por internet. Dependiendo de la complejidad de la
contraseña, John puede tardar unos pocos instantes u horas. Los diccionarios se descargan previamente en formato txt, o
comprimidos. Los guardamos en la ruta que queramos y se la indicamos a john:

john -wordfile: spanish.txt


carga el diccionario español

4. 1. CORTAFUEGOS.

El cortafuegos, es un programa que construye, por así decirlo un muro alrededor de una red para protegerla de ataques
desde Internet. El cortafuegos, puede ser un ordenador completo o una aplicación de software. El uso de una máquina o de
un programa depende del tráfico implicado. Para un equipo casero, un cortafuegos por software es suficiente. En
Gnu/Linux, se suele utilizar el programa: iptables, Freebsd utiliza: ipfw y Openbsd: pf. Iptables es un módulo del
kernel de Gnu/Linux. Los niveles de seguridad, oscilan entre el acceso total, sin acceso y acceso a algunos puertos. La
respuesta del cortafuegos, va a depender de las “Reglas” que utilice. Estas son los parámetros de seguridad. Editar Reglas a
mano es muy complicado. Normalmente se utilizan programas que nos ayuden en esta tarea. Los programas más utilizados
son:

Knetfilter
Firestarter
Fwbuilder (frontend para Iptables)

Nota
Principales puertos: http: 80 , https: 443 , ftp: 21 , smtp: 25 , pop: 110
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Para ver los puertos abiertos de una máquina, se utiliza el programa: nmap. Es muy sencillo utilizarlo. nmap nombre
de la máquina. El uso de escaneadores de puertos, supone una vulnerabilidad para cualquier sistema. No es un ataque
propiamente dicho, pero puede precederlo. Para evitar un escaneo de puertos, se utiliza el programa: portsentry. Este
ofrece información falsa a nmap. Los puertos que aparecen abiertos no lo están realmente, o no coinciden los
identificadores. Los parámetros de configuración del acceso se encuentran en:

/etc/login.defs

Estos parámetros, son cosas como el número de días que se puede acceder al sistema con la misma contraseña, los
intentos de login posibles, el tiempo de login, etc. El comando: faillog, permite aplicar restricciones. Veamos un ejemplo:

faillog -u antoniux -m3


El usuario antoniux tiene 3 intentos de login

El parámetro -a, muestra desde root, los intentos de login.

4.2. AUDITORIA DE SEGURIDAD.

Una auditoría de seguridad, es un estudio de las vulnerabilidades que pueda presentar una red. Para ello, se realizan unas
pruebas, mediante programas específicos. Uno de estos programas es: NESSUS. Es una aplicación muy completa, en
modo gráfico. Es necesario instalar los siguientes paquetes:

nessusd # demonio.
nessus # cliente.
nessus-pluging # base de datos de vulnerabilidades conocidas.

Lo primero que hay que hacer es crear un usuario.

nessus -adduser

El programa nos va a hacer algunas preguntas. Es conveniente escoger encriptación (cipher) y saltar las reglas (rules)
mediante: Ctrl + d. La opción: one time password, es una contraseña que solo se nos va pedir la primera vez que
ejecutemos Nessus. El comando para ello es:

nessus -p

Primero, se arranca el demonio (nessus-d) y luego se arranca el cliente (nessus). Hecho esto, veremos una ventana
con varias pestañas. En el apartado: Target selection, escribimos la IP del equipo o su nombre. Si escribimos el
nombre, es preciso activar el botón: dns. Aunque tiene bastantes más posibilidades de configuración, ya podemos escanear
el equipo. Finalmente, Nessus ofrece un informe. Un código de colores nos indica el nivel de peligrosidad encontrado en
cada funcionalidad del sistema operativo.

Nota
Sentry Firewall. Live CD, al estilo Knoppix enfocado a temas de Seguridad.

Nota
Ruta a los log: tail ­f /var/log/daemon.log
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

4.2. SNIFFER.

Los sniffers, son programas que nos muestran todo el tráfico que pasa por nuestra tarjeta de red. La traducción de
snifers, es algo así como husmeadores. Veamos algunos programas:

dsniff
ethereal
snort
etherape
ettercap

El programa ethereal, captura absolutamente todo lo que pasa por la tarjeta y nos lo presenta en pantalla. Esta
verbosidad, es finalmente un problema. La verdad, es que la mayoría del tráfico no nos interesa mucho. Para que nos sirva
para algo, es preciso aplicarle filtrados. O utilizar otro programa. dsniff, resume mucho más la información. Además el
objetivo de dsniff, es bastante más concreto: capturar contraseñas. El programa etherape, genera un gŕafico de la red, y
de las relaciones entre las distintas máquinas de la misma. Si nos conectamos a internet también aparecen las páginas. Si
hacemos: ping a otra máquina también aparecerá. El programa más complejo de todos es: ettercap. Es capáz de
capturar paquetes por la red. Puede ser utilizado para hacer ataques, del tipo de hacerse pasar por otra máquina, o el
llamado: man in the middle. El hombre en el medio, es decir colocarse entre dos máquinas.

Nota
touchGraph.com Ver internet en modo gráfico.

5. CORREO ELECTRONICO.

Vamos a instalar y configurar un servidor de correo. Tenemos varios programas en Debian para hacer esto. El programa
por defecto es: exim. También se puede utilizar:

Sendmail
qmail
postfix

Sendmail. recibe bastantes ataques. Qmail es seguro, pero bastante difícil de instalar. Postfix es un termino medio entre
ambos, y es el que vamos a utilizar. Hay que instalar tres paquetes:

postfix
postfix pcre
[ postfix-doc]

Durante la instalación de Postfix, tendremos que responder algunas preguntas. Escogemos internet, y le indicamos nuestro
usuario: user@aula9.hileras.net. Para arrancarlo, ejecutamos el comando: postfix start. Las posibilidades del
comando postfix son:

postfix start # arrancar.


postfix stop # parar.
postfix reload # reiniciar.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Para configurarlo editamos el fichero: main.cf, que se encuentra en: /etc/postfix. Es un documento muy comentado.
En el apartado: relayhost = , no hay ningún nombre de un servidor externo. Esto es lo adecuado, si no vamos a
subcontratar el servicio. En principio, no hace falta mucho más para postfix funcione. Ahora, vamos a instalar un cliente de
correo para comprobar el correcto funcionamiento de nuestro servidor. Utilizaremos: mutt, un cliente en modo texto. Lo
primero de todo, va a ser crear dos usuarios nuevos del sistema, que se van a llamar: prueba1 y prrueba2. Para crear un
usuario, el comando es: adduser. Más tarde, enviaremos tres correos, uno de prueba1 a prueba2, otro de prueba2 a
aula6 (un ordenador de la red local) y otro de prueba1 a una cuenta de correo en el exterior. Las rutas a los correos son:

/var/mail
/var/spool/mail

Estas dos rutas son. la primera la ruta a los correos recibidos, y la segunda la cola de los correos que están siendo
enviados. El comando: mailq nos muestra el estado de la cola. El comando: sendmail -q, fuerza al sistema a enviar el
correo inmediatamente.
Ahora vamos a pasar al controvertido asunto de las restricciones. Las restricciones son medidas que se aplican al servidor
de correo para que rechace algunos correos por motivos de seguridad. Lo cierto es que una parte significativa de los correos
son Spam, es decir correos no solicitados. El Spam disminuye el rendimiento global de internet, mina sus posibilidades de
crecimiento, aparte de ser una molestia para los usuarios. Para hacerle frente se han creado autoridades en internet
capacitados para incluir a los servidores implicados en listas de sospechosos de practicar Spam. Es bastante fácil entrar en
una de estas listas, pero es muy difícil salir. Para colmo, esta autoridades incapacitan para servir correo a las máquinas
implicadas durante algún tiempo. Estas listas son la pesadilla de los administradores de servidores. Ahora, veamos como se
aplican las restricciones:

Para añadir una restricción, escribimos estas lineas en el fichero: main.cf :

smtp
smtp_server_restrictions =
hash: /etc/postfix/access
reject_unknown_sender_domain
permit_mynetworks

La ruta: /etc/postfix/access hace referencia a un fichero de nombre: access que tenemos que editar.

6. MYSQL.

MySQL, es una base de datos muy potente, del estilo de aplicaciones privativas como Oracle o Postgress. Permite
conexiones remotas, conexiones concurrentes, sistemas de seguridad, etc. Se utiliza habitualmente en servidores Web que
alojen sitios dinámicos, como foros, tiendas on line, gestores de contenidos, etc. Por supuesto, también puede utilizarse en
las típicas bases de datos corporativas. Utiliza un lenguaje de sintaxis clara y sencilla llamado: SQL.

Para instalar MySQL, utilizamos, como siempre apt. Es preciso instalar un servidor y un cliente. Durante el proceso de
instalación tendremos que responder algunas preguntas de configuración del programa. La primera pantalla que aparece, no
es un error, sino información de seguridad. Más tarde, tenemos que elegir si queremos eliminar las bases de datos al
desinstalar el programa. Es mejor contestar que no. Finalmente, nos va a preguntar, si queremos que arranque MySQL al
iniciar el sistema. Lo más cómodo es responder si.

Hecho esto, ya hemos terminado la instalación. Lo primero que tenemos que hacer ahora, es crear un usuario, y asignarle
una contraseña. Un usuario para Mysql exclusivamente.

mysqladmin -u root password


Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Más adelante, hay que activar el acceso a la red. Para ello, editamos el fichero: my.cnf, que se encuentra en: /
etc/mysql/my.cnf. comentamos la fila: # skip-network, que impide los servicios de red. Para arrancar MySQL
ejecutamos:

/etc/init.d/mysql restart

El ejecutable, se encuentra es: /usr/sbin/ y se llama: mysqld. Aunque normalmente no utilizaremos el ejecutable
directamente. Las tablas se encuentran en: /var/lib/mysql/mysql. Entre otros ficheros, destacan por su importancia los
de extensión:

.frm # Estructura.
.myd # Datos.
.myi # Indice.

En principio, una copia de seguridad podría consistir simplemente, en copiar estos ficheros. Es imprescindible parar el
servidor primero. Los informes se guardan en: /var/log/mysql/ y los clientes, en: /usr/bin/. El cliente más básico,
funciona en linea de comandos y es el que vamos a utilizar, aunque también existen clientes gráficos. Para administrar
rémotamente MySQL, también puede utilizarse: webmin.
El comando para ejecutar el cliente es: mysql -p. Este cliente, es una consola virtual. Para salir se escribe: q o exit.
Veamos algunos comandos:

SELECT USER (); # mostrar usuario.


SELECT VERSION (); # mostrar versión.
SHOW DATABASES; # mostrar bases de datos en el servidor.
USE nombre de base de datos; # utilizar base de datos.

Ahora, vamos a crear una base de datos nueva. Crearemos también una tabla, y veremos como se editan los registros,
como se accede a los datos, etc. Para crear una base de datos nueva:

CREATE TABLE video (


id INT NOT NULL AUTO_INCREMENT,
titulo VARCHAR (200),
autor VARCHAR (64),
PRIMARY KEY (id)
);

Mediante estas instrucciones, hemos creado una tabla llamada: video, donde los registros se identifican (id) por un
número que se incrementará automáticamente con cada nuevo registro. Si un registro es eliminado, su número no será
utilizado por otro. La tabla va a tener las columnas: titulo, y autor, que permimitirán campos de 200 y 64 caracteres
respectivamente.
Para ver las tablas disponibles, utilizamos el comando: show tables. Para ver su estructura: describe tables. Para
insertar registros nuevos se hace de la siguiente manera:

INSERT INTO video (titulo,autor) VALUES ('ESPARTACO','Kubrik);

De esta manera, hemos creado un registro para la película Espartaco , en nuestra base de datos de vídeos. Para
visualizar el contenido de una tabla, y no solamente su estructura, el comando es:

SELECT * FROM video

Si queremos hacer busquedas más precisas, tendremos que complicar un poco las cosas. Podemos introducir algunos
registros más, y hacer una busqueda de, digamos, todas las películas de Kubrick.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

mysql> SELECT * FROM video WHERE autor = 'Kubrick';

De la misma manera, podemos buscar un registro completo, mediante su identificador:

mysql> SELECT * FROM video WHERE id = '7';

O todos los titulos, que empiecen por la letra: P.

mysql> SELECT * FROM video WHERE titulo LIKE 'P%';

O todas las películas de Kubrick que empiecen por la letra: s.

mysql> SElECT * FROM video WHERE titulo LIKE 's%' WHERE autor = 'Kubrick';

Para eliminar una base de datos:

DROP DATABASE video;

La orden: mysqldump, sirve para hacer un volcado de datos. Desde: /var/lib/mysql

mysqldump -u root -p video >curso20050426.sql

Esto, redirecciona en un solo fichero el contenido de /var/lib/mysql

Tambien se pueden hacer volcados comprimidos. Los parámetros que admite mysqldump, son:
-d # solo estructura.
-t # solo datos

Ahora, vamos a plantearnos un problema. Supongamos que estamos obligados a hacer una copia de seguridad cada día a
las cuatro de la mañana. Nosotros no trabajamos por la noche. ¿Cómo lo podríamos a hacer? Veamos, en primer lugar el
código y luego lo comentamos:

#!/BIN/SH
for bd in `ls /var/lib/mysql/ |grep -v my.cnf`;
do
LABEL=SQL_`hostname`_`date +%y-%m-%d`_”.sql.bz2
mysqldump -u root -pnodo50 $bd | bzip2 > /COPIAS_SEGURIDAD/$LABEL
echo “volcada $bd”
done

Este ejercicio es muy interesante. La primera linea es el encabezamiento habitual de todos los scripts de shell. La
segunda establece la variable: bd y lista el directorio: /var/lib/mysql/ y filtra: my.cnf. La tercera establece el nombre
del fichero de salida en base a la fecha (año, mes, dia). La extensión de las copias es: .sql.bz2, es decir, que la salida va
comprimida. La cuarta linea es el comando de copia propiamente dicho (mysqldump) , el usuario y su contraseña. Así
como, la ruta a la copia. Finalmente la quinta linea es más bien decorativa. Escribe en pantalla: volcada y la base de datos
que sea.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Este script se guarda con el nombre: backup.sh, en /root. Ejecutamos el comando: crontab -e. Esto nos permite
configurar el demonio cron. Le indicamos la periodicidad de las copias de esta forma:

01*** /root/backup.sh

Otra forma de configurar MySQL, es mediante Webmin, un programa web capacitado para configurar servidores
Linux online. Para ejecutarlo abrimos una sesión en un navegador, como Firefox y de url escribimos:
https://aula9.hileras.net:1000. La administración, se realiza en modo gráfico. Las desventajas de este método son
dos: por un lado no existe la misma seguridad que al editar las configuraciones en modo texto, y por otro, los refrescos de
pantalla podrían causar problemas.

7. COMPILACION DEL KERNEL.


En Gnu/Linux, la compilación de un nuevo Kernel es una acción relativamente corriente. En los sistemas operativos
privativos este tipo de cosas, solamente las hace el fabricante. Dos son las razones fundamentales para compilar un nuevo
kernel. Obtener un mejor rendimiento de la máquina, y lograr nuevas prestaciones, normalmente soporte de hardware nuevo.
Lo primero que hay que hacer es descargar el kernel que nos interese desde internet (www.kernel.org). Suele estar
comprimido en .tar.gz o en .bz2. Hay que descomprimirlo en el directorio: /usr/src. Creamos una carpeta llamada linux,
y copiamos dentro de ella el kernel descomprimido. Es buena idea hacer un enlace simbólico (acceso directo) a esta carpeta.
Más que nada, para cambiar el nombre de linux, por algo más concreto en el enlace.
Para la configuración previa a la compilación, se pueden utilizar varios programas. Todo tienen las mismas capacidades. No
son unos mejores que otros. Lo que cambia, es la interfaz. Los más utilizados son:

xconfig # Método gráfico (precisa las librerias QT).


menuconfig # Método gráfico basado en menús (precisa nurses).
gconfig # Modo texto ( precisa Gtk).

Para saber que kernel estamos utilizando se utiliza el comando: uname -a , para saber cual es nuestro hardware: lspci.
La información sobre la máquina se obtiene mediante:
cat /proc/cpuinfo

Comencemos. Elegimos uno de los programas de configuración, por ejemplo: menuconfig. Para ejecutar el programa,
desde: /usr/src/Linux, escribimos:
make menuconfig

La cantidad de parámetros que se pueden modificar es enorme. Conviene saber, que unos apartados se relacionan
automáticamente con otros, de tal forma que para poder realizar una acción, es preciso haber realizado otra previamente.
Por ejemplo, si queremos activar soporte para particiones de macintosh, primero tendremos que activar un menú llamado
sistemas de ficheros especiales, o algo similar. En general, lo que se hace es ir seleccionando nuestro hardware: tarjeta de
red, tarjeta de video, etc. Es el momento de comprobar si el nuevo kernel soporta algún dispositivo que no pudiésemos hacer
funcionar con el kernel anterior. Es imposible dar una receta precisa de lo que hay que activar o no. Esto, va a depender de
cada ordenador concreto. No hay que tener miedo. Instalar un nuevo kernel no significa destruir el antiguo. Finalmente
dispondremos de los dos, y escogeremos en el Lilo arrancar con uno o con otro.
Si salimos de menuconfig, nos va a preguntar si queremos guardar los cambios. Le decimos que sí. Ya tenemos la
configuración preparada. Ahora vamos a hacer algunas comprobaciones antes de compilar.
Guía de Administración de servidores Gnu/Linux Antonio Becerro Martinez. 2005

Escribimos: make dep, Este comando sirve para comprobar las dependencias.
Ahora: make clean, para borrar posibles restos de otras compilaciones anteriores. Finalmente:
make bzImage2430

Este último comando es el que compila. El kernel compilado se va a llamar: bzImage2430, y lo encontraremos en la
siguiente ruta: /usr/src/linux-2.4.30/arch/i386/lib. Una vez que la compilación del kernel se ha completado, hay que
compilar también los módulos. Estos le añaden funcionalidades. Los comandos necesarios son, en primer lugar: make
modules, y luego: make modules_install. Hecho esto, el kernel está completamente compilado. Pero para poder
utilizarlo hay que enviarlo al directorio /boot, que es donde se tienen que guardar los kernels con capacidad de arrancar el
sistema. También tenemos que copiar el fichero: System. map a /boot.
Por último, ya solo nos queda añadir una entrada en el Lilo al nuevo kernel. Pare ello abrimos el fichero de configuración
de Lilo en: /etc/lilo/lilo.conf, mediante un editor de texto como Vim.
Lo único que hay que hacer es añadir al finál del documento dos lineas:

image=/boot/bzImage2430
label=linux2430

Guardamos los cambios, y ejecutamos el comando: lilo, que actualiza la configuración. Y ya estamos listos para reiniciar el
ordenador. En la pantalla del lilo escogemos nuestro flamante kernel nuevo y cruzamos los dedos. Normalmente, suelen ser
capaces de arrancar el sistema. Otra cosa es la conexión a internet, que solo funcionará si se ha configurado
correctamente la tarjeta de red. Si algún apartado no responde a nuestras expectativas, se vuelve a ejecutar el programa de
configuración (menuconfig) y volvemos a compilar.

Antonio Becerro Martinez.


littledog@es.gnu.org
Alcobendas. 2005.

También podría gustarte