Administración de sistemas UNIX/Linux Práctica Colección de scripts para la configuración de una infraestructura de máquinas UNIX Curso 2013/2014 Introducción Esta práctica consiste en la elaboración de un conjunto de scripts de administración de servidores y clientes UNIX para facilitar el proceso de instalación y configuración de dichas máquinas a un administrador. El trabajo se realizará de forma individual, y su calificación supondrá la totalidad de la nota de la parte práctica de UNIX en la convocatoria de julio de 2014. Fechas importantes • Entrega final: 30 de junio de 2014. La entrega se debe hacer por correo electrónico, directamente a los profesores de la parte de UNIX de la asignatura: jhernando@fi.upm.es, jmontes@fi.upm.es. 1 Sistema objetivo El sistema sobre el que se debe realizar la práctica está formado por dos máquinas virtuales de VirtualBox con sistema operativo GNU/Linux Ubuntu 13.10, versión Server para el servidor y Client para el cliente. El trabajo debe realizarse obligatoriamente en estas máquinas. Las mismas máquinas virtuales serán utilizadas después para la evaluación de las prácticas entregadas. Las máquinas se encuentran disponibles para su descarga en las siguientes URLs: • http://laurel.datsi.fi.upm.es/~jhernando/ASI_2013_Server.tar.gz • http://laurel.datsi.fi.upm.es/~jhernando/ASI_2013_Client.tar.gz Dado el tamaño de los ficheros, en caso de tener problemas con la descarga de las máquinas, el alumno deberá ponerse en contacto con los profesores de la asignatura para obtener una copia en mano. Para su uso, una vez desempaquetado cada tar.gz Administración UNIX/Linux - Práctica Colección de scripts pag.1 y antes de arrancar las máquinas con VirtualBox, deberán descomprimirse los ficheros bzip2 con la imagen de disco de cada una de las máquinas (Server-root.vdi.bz2 y Client-root.vdi.bz2. En sistemas Linux basta con hacer bunzip2 nombre fichero.bz2 . Ambas máquinas tienen un usuario creado con el mismo nombre y contraseña: • Nombre: practicas • Contraseña: .practic@s En ambas máquinas se han instalado las extensiones de cliente para facilitar el intercambio de ficheros entre la máquina virtual y la máquina anfitrión. En caso de anfitriones Linux, se han preconfigurado una carpeta compartida de VirtuaBox y /etc/fstab en el cliente para poder montar el directorio raı́z del anfitrión en /mnt/host dentro de la máquina virtual, para ello basta con hacer sudo mount host. 1.1 Máquina servidora La primera de las dos máquinas virtuales preparadas para la práctica se denomina máquina servidora y su nombre de host es asi2013-server. Contiene una instalación básica de Ubuntu 13.10 Server, dos interfaces de red y cinco discos duros virtuales. El primero de estos discos contiene el sistema operativo en una única partición. Los otros cuatro deben ser utilizados durante la realización de la práctica. Una de las interfaces de red está configurada para tener salida a Internet a través del NAT de VirtualBox. La otra está configurada para conectarse a una LAN virtual compartida con la máquina cliente. Dicha interfaz está configurada además para hacer enrutado de paquetes y NAT, de manera que proporciona a la máquina cliente salida a Internet. En esta máquina el alumno deberá programar una serie de scripts bash. Tras la ejecución de dichos scripts, la máquina deberá tener instalados y configurados los siguientes servicios: • Directorio /home/ alojado en un sistema RAID 5. • Servidor de autenticación NIS. • Directorio /home/ exportado por NFS. • Scripts de generación automática de usuarios y grupos disponibles al administrador. Los scripts necesarios para conseguir dichas funcionalidades se describen en detalle más adelante. 1.2 Máquina cliente La segunda de las dos máquinas virtuales preparadas para la práctica se denomina máquina cliente y su nombre de host es asi2013-client. Contiene una instalación básica de Ubuntu 13.10 Desktop, una interfaz de red y un disco duro virtual con el sistema Administración UNIX/Linux - Práctica Colección de scripts pag.2 operativo instalado. La interfaz de red tiene configurada una IP estática para conectarse a la LAN virtual compartida con la máquina servidora y utilizar a ésta como pasarela. También se han instalado las extensiones de cliente de VirtualBox y preconfigurado una carpeta compartida para montar el directorio raı́z del anfitrión en /mnt/host. En esta máquina el alumno deberá programar una serie de scripts bash. Tras la ejecución de dichos scripts, la máquina deberá tener instalados y configurados los siguientes servicios: • Directorio /home/ montado por NFS desde la máquina servidora. • Autenticación remota contra el servidor NIS de la máquina servidora. Los scripts necesarios para conseguir dichas funcionalidades se describen en detalle mas adelante. 2 Realización de la práctica Para completar la práctica, el alumno deberá realizar las siguientes tareas: 1. Programación del script configurar RAID.sh para la máquina servidora. 2. Programación del script configurar servidor NIS.sh para la máquina servidora y del script configurar cliente NIS.sh para la máquina cliente. 3. Programación del script configurar servidor NFS.sh para la máquina servidora y del script configurar cliente NFS.sh para la máquina cliente. 4. Programación del script generar usuarios.sh para la máquina servidora. 5. Programación del script maestro del la máquina servidora (configurar servidor.sh) y del script maestro del la máquina cliente (configurar cliente.sh). 6. Redacción de una memoria que describa el funcionamiento y proceso de elaboración de los scripts anteriores. IMPORTANTE: Todas la operaciones de administración deberán realizarse dentro de los scripts (inclyendo la instalación de los paquetes necesarios, por ejemplo). El objetivo es que dichos scripts funcionen correctamente ejecutados como superusuario sobre las máquinas virtuales tal cual se proporcionan, obteniéndose la funcionalidad requerida sin ninguna operación manual adicional. Cualquier script que no cumpla con este requisito será considerado incorrecto. Administración UNIX/Linux - Práctica Colección de scripts pag.3 2.1 Script configurar RAID.sh Este script bash se utilizará en la máquina servidora. Se debe programar de forma que se pueda ejecutar con la máquina “limpia”, es decir, tal y como se proporciona al alumno. El resultado de su ejecución debe ser el siguiente: • Se habrá creado un sistema RAID 5 utilizando los 4 discos disponibles en la máquina y el servicio mdadm. • Se habrá creado un sistema de ficheros ext4 en dicho RAID. • Se habrá copiado toda la información contenida en el directorio /home/ al RAID • Se habrá configurado el sistema para que el nuevo RAID se monte automáticamente en /home/ al arranque de la máquina. Todas estas operaciones deberán realizarse dentro de dicho script. 2.2 Scripts configurar servidor NIS.sh y configurar cliente NIS.sh Estos scripts bash servirán para configurar el servidor (en la máquina servidora) y el cliente (en la máquina cliente) de autenticación remota NIS. Al igual que el resto de scripts, se deben programar de forma que se pueda ejecutar con la máquina “limpia”, es decir, tal y como se proporciona al alumno. El resultado de su ejecución debe ser el siguiente: • El servidor de NIS debe estar instalado y funcionando en la máquina servidora. • El cliente de NIS debe estar instalado y funcionando en la máquina cliente. Todas las operaciones de administración necesarias (instalación de software, modificación de ficheros de configuración, etc.) deberán realizarse desde dentro de los scripts. 2.3 Scripts configurar servidor NFS.sh y configurar cliente NFS.sh Estos scripts bash servirán para configurar el servidor (en la máquina servidora) y el cliente (en la máquina cliente) de NFS. Al igual que el resto de scripts, se deben programar de forma que se pueda ejecutar con la máquina “limpia”, es decir, tal y como se proporciona al alumno. El resultado de su ejecución debe ser el siguiente: • El servidor de NFS debe estar instalado y funcionando en la máquina servidora, y el directorio /home/ exportado. • El directorio exportado por el servidor debe estar montado en la ruta /home/ de la máquina cliente. Todas las operaciones de administración necesarias (instalación de software, modificación de ficheros de configuración, etc.) deberán realizarse desde dentro de los scripts. Administración UNIX/Linux - Práctica Colección de scripts pag.4 2.4 Script generar usuarios.sh Este script bash servirá para automatizar el proceso de creación de usuarios y grupos en la máquina servidora. El script debe ser capaz de crear conjuntos de usuarios de forma rápida. El script creará una serie de grupos y usuarios dentro de éstos. Los nombres de dichos usuarios estarán formados por una cadena base (nombre del grupo), seguida de un número entero que los diferencie. Si algún usuario ya existı́a, deberá añadirlo al grupo solicitado como grupo adicional. En ningún caso el programa debe fallar por causa de grupos o usuarios ya existentes. El script no debe esperar ninguna información adicional por parte del usuario que lo ejecuta. En el caso de las contraseñas para los usuarios creados, estas deben consistir en cadenas de 12 caracteres aleatorios generadas automáticamente por el script. Para su consulta y gestión por el administrados dichas claves deben ser almacenadas en un fichero denominado claves que contenga por cada lı́nea el nombre de cada usuario creado seguido de su contraseña separada por un único espacio en blanco. El script debe recibir una lista variable de parámetros. Estos parámetros serán pares nombre de grupo y número de usuarios. El script creará cada uno de los grupos indicados y el número de usuarios correspondientes. Un posible ejemplo de uso de dicho script podrı́a ser: $ crear_usuarios.sh dev 2 ventas 1 publi 3 Esto crearı́a los siguientes usuarios y grupos: • Grupo dev con los usuarios dev1 y dev2. • Grupo ventas con el usuario ventas1. • Grupo publi con los usuarios publi1 y publi2 2.5 Scripts maestros Los scripts maestros facilitarán mas aún la tarea del administrador, ejecutando de manera secuencial los scripts anteriores. Esto permite la configuración completa de cada máquina de manera totalmente automatizada. La ejecución del script configurar servidor.sh en la máquina servidora, además de ejecutar los scripts de configuración de servicios, deberá ejecutar también el script de creación de cuentas. Los argumentos de entrada recibidos deberán ser redirigidos integramente al script generar usuarios.sh. El resultado final deberá ser: • Sistema RAID configurado y montado en /home/. • Servidor NIS funcionando. • Directorio /home/ exportado por NFS. Administración UNIX/Linux - Práctica Colección de scripts pag.5 • Creación de las cuentas de usuario y grupos especificados a través de los parámetros de entrada. De igual forma, la ejecución del script configurar cliente.sh en la máquina cliente deberá producir los siguientes resultados: • Ciente NIS funcionando y conectado a la máquina servidora. • Directorio /home/ montado por NFS desde la máquina servidora. IMPORTANTE: Los scripts maestros deberán hacer uso de los demás scripts programados para esta práctica. En ningún caso se deberá replicar código de éstos. 2.6 Memoria de la práctica Por último, el alumno deberá elaborar una breve memoria de la práctica, explicando el funcionamiento de cada script programado, ası́ como cualquier dificultad o aspecto de interés. La memoria debe ser un documento formal, correctamente estructurado, redactado y formateado usando alguna herramienta de procesamiento y edición de textos (Microsoft Word, LATEX, etc.). Debe contener figuras explicativas, tablas y otros recursos que ayuden a la comprensión del documento. No se debe descuidar la redacción de la memoria, ya que podrı́a afectar negativamente a la nota final. IMPORTANTE: La memoria NO debe contener el código de los scripts, que se entregarán aparte. 3 Entrega El alumno deberá entregar la práctica por correo electrónico, a cualquiera de los profesores de la parte de UNIX de la asignatura: jhernando@fi.upm.es, jmontes@fi.upm.es. La entrega deberá constar de un único fichero comprimido (zip, rar, tgz, ...). El contenido de dicho fichero debe ser: • Script configurar RAID.sh. • Script configurar servidor NIS.sh. • Script configurar cliente NIS.sh. • Script configurar servidor NFS.sh. • Script configurar cliente NFS.sh. • Script generar usuarios.sh. • Script configurar servidor.sh. • Script configurar cliente.sh. • Cualquier otro fichero auxiliar del que hagan uso los scripts anteriores. • Memoria de la práctica (en pdf). Administración UNIX/Linux - Práctica Colección de scripts pag.6 4 Evaluación La evaluación de la práctica se llevará a cabo usando las misma maquinas virtuales puestas a disposición del alumno para su realización. La calificación otorgada será de 0 a 10 puntos, repartidos de la siguiente forma: Parte Configuración RAID (configurar RAID.sh) Configuración NIS (configurar servidor NIS.sh, configurar cliente NIS.sh.) Configuración NFS (configurar servidor NFS.sh, configurar cliente NFS.sh.) Generación de usuarios (generar usuarios.sh) Scripts maestros (configurar servidor.sh, configurar cliente.sh) y documento de memoria Puntuación máxima 2 puntos 2 puntos 2 puntos 2 puntos 2 puntos La calificación obtenida supondrá el total de la parte práctica de UNIX (40% de la nota total de la asignatura) para la convocatoria de julio. Administración UNIX/Linux - Práctica Colección de scripts pag.7