Ejercicio VI

Anuncio
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
Descargar