Administración de sistemas UNIX/Linux Ejercicios prácticos VI Octubre 2013 NOMBRE 1 NOMBRE 2 FECHA Introducción Esta práctica se centra en los aspectos relativos al arranque y parada del sistema ası́ como aspectos básicos de la configuración de servicios por medio de Upstart. Además de realizar los ejercicios aquı́ descritos se deberá contestar a las preguntas de este cuestionario en el espacio reservado y entregarlo al profesor al final de la clase. Para la realización de esta práctica se recomienda usar, por seguridad y comodidad, la máquina virtual proporcionada al comienzo de la sesión. También se recomienda hacer una copia de seguridad de la imagen de disco .vdi previamente. 1 Arranque y parada 1.1 Paso de opciones al kernel al arranque Usando la máquina virtual, arrancar el sistema reemplazando el proceso init habitual por /bin/bash (para que esto funcione también es necesario indicar al kernel que monte el sistema de ficheros raı́z en modo lectura escritura en vez de sólo lectura). Para ello leer atentamente la información de ayuda mostrada por GRUB en el arranque y modificar interactivamente la entrada de menú correspondiente al arranque normal1 (los cambios realizados de esta manera no son permanentes por lo que no existe riesgo de dañar la configuración de arranque). Describir la secuencia de pasos seguidos de manera detallada, y en particular cómo se ha modificado la entrada de menú. Describir qué caracteriza al prompt del shell una vez ha arrancado el sistema. 1 Parece ser que GRUB no configura el mapa de teclado español, ası́ que la edición habrá que hacerla con el mapa de teclado norteamericano, el mapa de teclado se puede consultar en http://en.wikipedia. org/wiki/Keyboard_layout#US-International Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.1 ¿Para qué podrı́a servir arrancar el sistema de este modo? (recordar, por ejemplo que el modo de recuperación solicita la contraseña de root) Tal y como está configurada la máquina ahora, explica razonadamente si crees que esto representarı́a algún problema de seguridad tratatándose de una máquina a la que los usuarios tienen acceso fı́sico a la terminal y posibilidad de reiniciarla (y asumiendo que el disco no está cifrado) Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.2 Si piensas que esto es un problema, intenta explicar una solución concreta para el problema (Pista: Toda la información esta en las páginas de manual de GRUB, dichas páginas están disponibles a través del mandato info grub, basta consultar el ı́ndice para acceder a la sección adecuada). Describir asimismo cómo funciona la solución planteada una vez implantada. 1.2 Parada de la máquina Indicar qué mandato habrı́a que ejecutar para que la máquina sea reiniciada en 5 minutos desde la ejecución del mismo, con un mensaje de aviso en todas las terminales que diga “Arrivederci”. 2 Upstart Para la realización de estos ejercicios es muy recomendable haber leı́do previamente la guı́a rápida de Upstart descargable desde la página web de la asignatura. Para contestar con precisión a las cuestiones planteadas, es importante prestar atención a la nomenclatura usada en el ejercicios (tarea, servicio, señal, evento, ...). Recordar que para habilitar las trazas de depuración del proceso init se ejecuta em mandato initctl log-priority debug. Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.3 2.1 Ejercicios básicos 1. Crear una tarea sencilla que sea activada por un evento de nombre prueba. Dicha tarea debe imprimir sus variables de entorno en un fichero en /tmp. Arrancar la tarea desde la lı́nea de mandatos de manera manual y luego por medio de un evento. Indicar el contenido el fichero .conf ası́ como de los mandatos utilizados en ambos casos y el contenido del fichero escrito en /tmp (haciendo notar las diferencias si las hubiera). 2. Crear un trabajo con el siguiente código en la tarea principal script for i in ‘seq 0 5‘; do sleep 1 date >> /tmp/traza done end script Añadir cláusulas pre-start, post-start, pre-stop y post-stop al trabajo para que dejen alguna traza adicional en el fichero. Incluir abajo el fichero de configuración completo. Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.4 Preguntas: (a) ¿Qué diferencias se observan entre ejecutar el trabajo como una tarea o un servicio (usar el mandato start para arrancar el trabajo y editar el fichero de configuración si es necesario)? (b) ¿Cuáles de las cláusulas adicionales son ejecutadas según el caso? (c) ¿Cuáles son ejecutadas cuando paramos el trabajo manualmente mientras la tarea principal está aún ejecutando? Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.5 2.2 Sincronización de trabajos 1. Escribir un trabajo que cree un fichero de nombre current con un sello de tiempo en el directorio /var/log/stamp. Se debe considerar que ese directorio puede no existir previamente, para crearlo (si fuese necesario) se debe usar una trabajo adicional que debe lanzarse automáticamente por medio de la señal starting del trabajo principal. Al terminar el trabajo principal, otro trabajo debe ser disparado para añadir el contenido de /var/log/stamp/current a un fichero /var/log/stamps y borrar current. Lanzar el trabajo que genera el sello de tiempo varias veces y comprobar como el fichero /var/log/stamps va acumulando los distintos sellos de tiempo. Si se usa date para generar los sellos de tiempo el fichero stamps deberı́a tener un aspecto similar a este tras 3 ejecuciones: Thu May Thu May Thu May 5 12:31:46 CEST 2013 5 12:31:57 CEST 2013 5 12:32:00 CEST 2013 Escribir el nombre y código de los ficheros de configuración empleados: Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.6 2. Crear un shell script llamado traza.sh que contenga un bucle infinito con una pausa de un segundo y que esriba una traza con el PID del proceso shell y el instante de tiempo al fichero indicado como argumento del script. Incluir el código del script en el recuadro inferior. Crear dos servicios que ejecuten dicho script. Uno usando la cláusula exec y el otro usando script y lanzando el script en background. (a) Al iniciar cada uno de los trabajos, ¿qué diferencias se observan en cada caso al consultar el estado de la tarea unos segundos después? (b) ¿Qué sucede si intentamos arancar otra vez la tarea en cada caso (quiere decirse, hacer start, no restart? (c) ¿Quedan procesos traza.sh corriendo al parar cada trabajo? (d) ¿Qué sucede si añadimos expect fork a la configuración usada en el segundo caso? Documentar el proceso que se ha llevado a cabo para hacer las distintas averiguaciones. Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.7 Oct. 2013 Administración UNIX/Linux - Ejercicios VI p.8