Centro de Informática
Sistemas Operativos II
Examen Agosto 2000.
Solución de scripts.
Parte A. Sin consulta de material (40 puntos).
Responder brevemente las siguientes preguntas (4 puntos cada una).
1. Explicar el uso del comando exit en programación.
¿Para qué sirven los valores de retorno? ¿Cómo
se interrogan?
2. ¿Qué diferencia hay entre programa, archivo y proceso?
¿Qué relación hay entre ellos?
3. ¿Qué es el UID? ¿Qué es el GID?
4. ¿Qué función cumple el archivo /etc/passwd?
¿Qué contiene cada línea?
Escribir comandos para realizar las tareas indicadas:
1. Fijar, en modo simbólico y absoluto, los permisos del
archivo /usr/local/bin/conectar de modo que todos lo puedan ejecutar, el
usuario lo pueda leer y escribir, y el grupo lo pueda leer.
2. Crear, en el subdirectorio bin del directorio propio, un enlace
simbólico al script /usr/local/bin/conectar con nombre conec.
3. Crear en el subdirectorio bin del directorio propio, un enlace
hard hacia el script may2min ubicado bajo utils en el directorio propio.
Sea la siguiente salida de ls -l:
-rw-r--r-- 1 root root
33280 jun 12 19:40 Carta.doc
drwxrwxrwx 5 victor staff
1024 dic 4 1999 step
drwxrwxr-x 22 victor staff
1024 nov 20 1999 Office51
drwxr-x--- 6 victor staff
1024 may 7 16:43 argos
drwxrwxr-- 21 victor staff
1024 jul 11 18:22 bajados
-rw-rw---- 3 root root
542 jul 13 11:26 boor.exe
drwxrwxrwt 3 victor staff
1024 may 25 10:02 borrador
-rwsrwsr-x 1 root root
9218 jun 12 19:41 pph3
drwxrwx--x 2 victor victor
1024 may 7 16:47 cdir
-rw-rw-r-- 3 root root
542 jul 13 11:26 mysql-doc
-rw-r-xr-- 3 victor staff
1084 ago 1 10:01 ver.exe
-rwxr-xr-x 3 victor staff
1084 ago 1 10:01 ver
drwxr-xr-x 7 victor victor
1024 jul 25 11:48 lit
4. Indicar, si los hay,
a) directorios públicos;
c) archivos ejecutables;
d) directorios recorribles por todo el mundo;
5. Indicar, si los hay,
e) directorios donde el grupo puede borrar archivos;
g) archivos que son enlaces simbólicos.
6. Indicar, si los hay,
f) archivos ejecutables con permisos de root;
b) archivos que tienen enlaces hard;
Parte B. Con libre consulta de material (76 puntos).
1. Para definir un nuevo alias de correo, es preciso
insertar en el archivo /etc/aliases una lína de la forma
tecnicos:jperez,hvila,pgarcia
donde el primer nombre es el alias, luego el separador de campo ":" y finalmente
la lista de usuarios a incluir en el alias, separada por comas y sin espacios.
Escribir un script para crear un alias de correo. El script deberá:
-
pedir el nombre del nuevo alias;
-
verificar si ya existe, en cuyo caso emitirá un mensaje de error
y terminará.
-
solicitar el ingreso de nombres de usuario hasta recibir un nombre en blanco.
-
mostrar la lista de usuarios separada por comas y pedir confirmación.
-
si el usuario confirma, agregar la línea a incluir en /etc/aliases
y ejecutar el comando /usr/bin/newaliases; si no, terminar.
(20 puntos)
#!/bin/bash
# prob1: da un alta de alias para correo.
#
clear
echo "Crear Alias de Correo:"
echo
echo -n "Nombre alias: "
read NOMALIAS
if [ `grep ^$NOMALIAS /etc/aliases` ]
then
echo Ese alias ya existe.
exit 1
fi
echo
echo Ingrese nombres de usuarios a incluir en alias $NOMALIAS
echo Digite Enter con nombre en blanco para finalizar.
echo
echo -n "Nombre: "
read NOMBRE
LINEA=""
while [ $NOMBRE ]
do
if [ $LINEA ]
then
# línea ya tiene algo
LINEA=$LINEA","$NOMBRE
else
# línea vacía, coloca el primer nombre
LINEA=$NOMBRE
fi
echo -n "Nombre: "
read NOMBRE
done
echo
echo Se incluirán los siguientes nombres en alias $NOMALIAS:
echo $LINEA
echo -n "Está bien?(S/n): "
read RESP
if [ $RESP = "s" -o $RESP = "S" ]
then
echo $NOMALIAS":"$LINEA >> /etc/aliases
/usr/bin/newaliases
else
echo No se creó el alias.
fi
2. El archivo bedelia.lst contiene una lista
de grupos de alumnos donde el primer campo es el nombre del grupo. En el
sistema debe existir una cuenta de usuario con ese mismo nombre. Escribir
un script para verificar que todos los grupos de bedelía tienen
una cuenta de usuario. El script deberá mandar un correo al usuario
cdiadmin@cdi.edu.uy con el encabezamiento
# Alumnos faltantes en el sistema
# según lista de Bedelía
seguido de la lista de nombres de grupo carentes de cuenta de usuario en
el sistema. Sugerencia: crear un archivo auxiliar y luego borrarlo. (15
puntos)
#!/bin/bash
# prob2: lista usuarios faltantes según lista de bedelía
#
clear
echo "# Alumnos faltantes en el sistema" > faltan.lst
echo "# según lista de Bedelía" >> faltan.lst
echo "#" >> faltan.lst
LISTA=`cat bedelia.lst | cut -d: -f1`
for ALUMNO in $LISTA
do
id $ALUMNO 1>/dev/null 2>&1
if [ $? -ne 0 ]
then
echo $ALUMNO >> faltan.lst
fi
done
mail -s "Usuarios faltantes" cdiadmin@cdi.edu.uy < faltan.lst
rm faltan.lst
3. Escribir un script que presente un menú
de alternativas para conexión a Internet, con este aspecto:
1.Adinet.
2.Uruguaynet.
3.Multired.
4.Technet.
0.Fin.
Opción:
El usuario digitará el número de opción. La conexión
se realiza mediante el script /usr/bin/pon (PPP on) seguida del nombre
de la opción elegida en minúsculas. Si el usuario elige Fin,
la conexión se corta con el script /usr/bin/poff (PPP off) sin parámetros.
(15 puntos)
#!/bin/bash
# prob3: menú de conexión a Internet
# presentación del menú
clear
echo Menú de conexión a Internet.
echo Elija una alternativa:
echo " 1. Adinet."
echo " 2. Uruguaynet."
echo " 3. Miltired."
echo " 4. Technet."
echo " 0. Fin conexión."
echo -n "Opción: "
read OPCION
case $OPCION in
1)
/usr/bin/pon adinet;;
2)
/usr/bin/pon uruguaynet;;
3)
/usr/bin/pon multired;;
4)
/usr/bin/pon technet;;
0)
/usr/bin/poff;;
*)
echo Opción incorrecta.
esac