Logotipo del grupo GSO

4. Compilación e Instalación de Amanda

Este apartado sólo será necesario en caso de haber elegido la instalación manual. Si hemos realizado la instalación mediante el comando apt-get, todo lo que aquí se explica habrá sido ya configurado de forma automática (mediante la configuración por defecto).

Antes de nada debemos descomprimir el paquete (en un directorio cualquiera, por ejemplo /usr/local/src).

4.1. Configuración Preliminar

La típica configuración de Amanda se ejecuta como un usuario distinto a root, como por ejemplo "backup" o "amanda", con los permisos necesarios para relizar copias de seguridad (en adelante, backups). Frecuentemente, la posibilidad de hacer un login para el usuario que se cree está desactivada (recomendado). Por lo tanto si probáis a hacer un login con ese nombre de usuario, comprobaréis que no puede entrar al sistema.

Para usar el programa comercial "dump" en lugar del GNU tar, el usuario que controla Amanda debe estar en un grupo con permisos de lectura contra los dispositivos de copia. El número de miembros en este grupo debería estar muy controlado, ya que tienen permiso para abrir cada uno de los ficheros de los clientes.

Hay dos formas para enlazar Amanda y el grupo de miembros del dispositivo de copia. Poniendo al usuario Amanda en el grupo al que actualmente pertenecen los dispositivos de copia, como el grupo primario o el secundario, o creando un nuevo grupo para Amanda y pasando a este nuevo grupo a los propietarios de los dispositivos. Amanda (actualmente, el programa "dump") necesita acceso de sólo lectura, de modo que desactiva los permisos de escritura del grupo. Desactiva también los permisos del "resto del mundo". Nosotros asociaremos el usuario "amanda" al grupo "disk".

Para usar GNU tar, Amanda funciona bajo un programa setuid-root que garantiza los permisos necesarios. La versión GNU de "tar" debe ser la usada con Amanda. Las versiones comerciales (a menos que tengan origen en la GNU y sean al menos versión 1.12) no funcionarán, porque Amanda depende de características adicionales.

4.2. Configuración de la Generación de Amanda

Ahora viene la parte del ./configure. Este es el típico script con el que nos encontramos en todo paquete de fuentes, que sirve para preparar las órdenes que posteriormente vamos a pasarle al compilador.

Usa el usuario y grupo Amanda para las opciones --with-user y --with-group en ./configure. Por ejemplo, para usar "amanda" como nombre de usuario y "disk" como nombre de grupo:

# ./configure --with-user=amanda --with-group=disk

No se necesitan obligatoriamente más opciones para ./configure, pero si quieres puedes ver todas las posibilidades con ./configure --help. No te vuelvas loco cambiando opciones. Los valores por defecto son normalmente adecuados, y se requiere de cierta experiencia con Amanda para hacer cambios en dichos valores. Deja --with-debugging para que los ficheros de depuración de errores sean creados en los clientes. Consumirán algo de espacio, pero son "casi" necesarios y sobre todo muy útiles a la hora de resolver posibles problemas.

La generación normal crea tanto el servidor de cintas como el software cliente. La parte servidora del sistema necesita las partes de cliente.Sin embargo, los clientes normalmente no necesitan la parte servidora de Amanda. Te puedes ahorrar y tiempo de compilación añadiendo --without-server a los argumentos de ./configure cuando compiles para ellos.

En nuestro supuesto práctico (un servidor Linux y clientes W98), sólo necesitas instalar Amanda en el servidor. Los clientes no necesitan ninguna instalación de software adicional.

El mecanismo de seguridad por defecto usa un fichero con el mismo formato que .rhosts, pero llamado .amandahosts. Esto mantiene a las operaciones de Amanda separadas del trabajo normal rsh/rcp que usa el mismo usuario. No es recomendable, pero .rhosts y hosts.equiv pueden ser usados, añadiendo --without-amandahosts a los argumentos de ./conFigure. Mejor usa .amandahosts.

Amanda usa sus propios protocolos TCP y UDP. Normalmente, los que ves a continuación (extraído del /etc/services):

amanda 10080/tcp # Amanda backup services
amanda 10080/udp # Amanda backup services
amandaidx 10082/tcp # Amanda backup services
amidxtape 10083/tcp # Amanda backup services

Los puertos TCP usados para la transferencia de datos pueden restringirse con --with-portrange para usar Amanda entre hosts separados por un cortafuegos (firewall). Una entrada típica podría ser:

# ./configure --with-portrange=50000,50100 …

Esto no afecta a las peticiones UDP iniciales hechas desde el servidor de cintas a los clientes. El puerto UDP de amanda (normalmente 10080) debe tener paso permitido a través del firewall. Que no se te olvide esto, si usas un cortafuegos.

Si vas a usar muchas opciones con ./configure, puedes ponerlas todas juntas en /usr/local/share/config.site o en /usr/local/etc/config.site para mantenerlas entre una compilación y otra. Tienes un ejemplo de esto en example/config.site.

4.3. Compilación e Instalación

Una vez hemos ejecutado ./configure, teclea make para compilar Amanda, y luego teclea make install para instalarlo. El paso "make install" debes hacerlo necesariamente como root porque algunos programas de Amanda requieren privilegios de sistema.

A menos que la hayas cambiado la ubicación por defecto, Amanda se instala en estas áreas:

  • /usr/local/sbin: Programas que ejecutan los administradores.

  • /usr/local/lib: Librerías.

  • /usr/local/libexec: Programas privados que sólo usa Amanda.

  • /usr/local/man: Documentación.

Ahora es un buen momento para leer la página principal de amanda. Proporciona una rápida explicación de Amanda, una descripción de cada programa e información detallada sobre la configuración.

Los siguientes programas deben tener setuid-root (lo cual lo hace si tecleas make install como root). El primer grupo (amcheck, dumper, y planner) corren en la máquina servidora de cintas, y necesitan un puerto privilegiado de red para una comunicación segura con los clientes. El resto de programas son utilidades usadas en los clientes, en función del programa de copia usado y el tipo de s.o.

  • sbin/amcheck: Programa de chequeo de Amanda.

  • libexec/dumper: Programa cliente de comunicaciones.

  • libexec/planner: Programa de estimación de procentaje de volumen copiado.

  • libexec/killpgrp: Usado para matar (kill) proramas de copia que corren como root.

  • libexec/rundump: Setuid wrapper para sistemas que necesitan correr el programa de copiado como root.

  • libexec/runtar: Setuid wrapper para ejecutar GNU tar como root.

Todos estos programas son instalados con los permisos de acceso de grupo y del "resto del mundo" desactivados para el grupo de Amanda, denominado según --with-group. Asegúrate de que todos los miembros el grupo son los que deben ser, ya que rundump y runtar en particular dan acceso a cada uno de los ficheros en el sistema.

Si el software Amanda está accesible via NFS, asegúrate de que las opciones mount admiten programas setuid. Además, si se usa GNU tar, el root necesita acceso de escritura a /usr/local/var/amanda/gnutar-lists (o el valor que hayas usado con --with-gnutar-list para el ./configure) para almacenar información sobre cada nivel parcial.

Si la generación te da problemas o Amanda necesita volver a ser generado, sobre todo si tienes nuevas opciones para ./configure, la siguiente secuencia te garantiza que todo es perfectamente instalado, elminando cualquier rastro de la instalación anterior:

# make distclean 
# ./configure … 
# make 
# make install (como root)

Se pueden diagnosticar posibles problemas en los procesos de ./configure, mirando en el fichero config.log. Contiene una salida detallada de los tests que realiza ./configure. Advierte que es normal que algunos de dichos tests "fallen" , como consecuencia de las pruebas que ./configure realiza para determinar cómo acceder a varias características del sistema.

Un problema común cuando usa el compilador GNU C es no reinstalarlo cuando cambia la versión de S.O. GCC es particularmente sensible a los ficheros de cabecera del sistema y debe ser reinstalado o tener incluidos las modificaciones adecuadas en sus ficheros include (mira las notas sobre instalación de tu versión de gcc) si el S.O. es actualizado. Ejecutando gcc --verbose verás de dónde obtiene gcc su información, y contiene una indicación de la versión de s.o. que espera encontrar.

Amanda necesita realizar cambios en los servicios de red y en el fichero de configuración relativos a inetd. El script client-src/patch-system debería actualizar tu sistema en la mayoría de los casos. Este no maneja actualmente sistemas que entreguen servicios via YP/NIS. Si el script no te funciona, añade las siguientes entradas al fichero services (p.e., /etc/services) or YP/NIS map:

Amanda 10080/udp 

Amandaidx 10082/tcp 

Amidxtape 10083/tcp

Suele venir todo preconfigurado. Tan sólo tienes que descomentar las líneas en el inetd.conf. Pero de todas formas, repasa el /etc/services, que nunca está de más.

Cada cliente Unix/Linux necesita una entrada como estas en su fichero de configuración de inetd (p.e., /etc/inetd.conf), sustituyendo al "usuario_Amanda" por Amanda y la ruta completa al directorio libexec de Amanda para RUTA:

amanda dgram udp wait usuario_Amanda /RUTA/libexec/amandad amandad

El servicio amanda es usado por todos los servicios controlados por Amanda para realizar funciones en los clientes. El servidor de cintas necesita entradas como éstas para poder ejecutar la herramienta amrecover:

amandaidx stream tcp nowait Amanda /PATH/libexec/amindexd amindexd 
amidxtape stream tcp nowait Amanda /PATH/libexec/amidxtaped amidxtaped

En algunas distribuciones ya existen estas líneas, aunque comentadas. Simplemente descoméntalas, y comprueba que la ruta de acceso a amindexd y a amidxtaped concuerdan con las de tu configuración. Si no es así, pues las cambias y listo. No olvides hacer un killall -HUP inetd si has hecho cambios al inetd.conf.

El servicio amandaidx proporciona acceso a los catálogos, mientras que el servicio amidxtape proporciona acceso remoto al dispositivo de cinta.