SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Técnica de Sistemas. Curso 2004-2005

Práctica 1: Procesos en UNIX. Credenciales

Comenzar la codificación de un shell en UNIX, que se irá completando en suscesivas prácticas. El shell incluirá de momento los siguientes comandos:

autores
Indica los nombres y los logins de los autores de la práctica.
=ruta
Inicializa la ruta de búsqueda del shell a vacía. La ruta de búsqueda del shell es el conjunto de directorios donde el shell busca los ejecutables para los comandos xec back y comando. NO COINCIDE NECESARIAMENTE con la variable de entorno ruta de búsqueda. No debe implementarse como una variable de entorno. Inicialmente está vacía.
+ruta [dir]
Añade dir a la ruta de búsqueda del shell. dir no debe incluir el caracter / al final (Ejemplo +ruta /usr/bin y NO +ruta /usr/bin/). +ruta sin argumentos debe indicar cual es la ruta de búsqueda actual.
-ruta [dir]
Elimina dir de la ruta de búsqueda del shell. -ruta sin argumentos debe indicar cual es la ruta de búsqueda actual.
donde com
Si el ejecutable com reside en elguno de los directorios de la ruta de búsqueda nos indica la trayectoria completa hasta el ejecutable.
fork
El shell crea un hijo y despues de crearlo se queda en espera a que el hijo termine termine.
xec com
El shell ejecuta, sin crear un nuevo proceso (reemplaza su código) el programa especificado en com. com representa un ejecutable con sus parámetros. Para poder ser ejecutado, dicho ejecutable debe residir en uno de los directorios del ruta de búsqueda del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv.
comando
El shell crea un proceso que ejecuta en primer plano el program especificado por comando. comando representa un ejecutable con sus parámetros. Para poder ser ejecutado, dicho ejecutable debe residir en uno de los directorios de la ruta de búsqueda del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv.
back comando
El shell crea un proceso que ejecuta en segundo plano el program especificado por comando. comando representa un ejecutable con sus parámetros. Para poder ser ejecutado, dicho ejecutable debe residir en uno de los directorios del ruta de búsqueda del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv.
getpid
Indica el pid del proceso (del shell).
getppid
Indica el pid del proceso padre del shell.
getuid
Indica las credenciales de usuario del proceso. Indica tanto la real como la efectiva. Tanto para la real como la efectiva debe indicar el valor numérico y el login asociado.
getgid
Indica las credenciales de grupo del proceso. Indica tanto la real como la efectiva. Tanto para la real como la efectiva debe indicar el valor numérico y el nombre del grupo.
setuid uid
Intenta establecer la credencial efectiva de usuario del proceso a uid. uid puede representar tanto el valor numérico de la credencial como el login asociado. En caso de no poder establecer la credencial indicará el motivo.
setgid gid
Intenta establecer la credencial efectiva de grupo del proceso a gid. gid puede representar tanto el valor numérico de la credencial como el nombre del grupo. En caso de no poder establecer la credencial indicará el motivo.
chdir [dir]
Cambia el directorio actual a dir. Si no se le suministra argumento informa del directorio actual.
exit
Sale del shell.

Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (exec, chdir, fork, setuid, setgid, getpwent, getgrent ...)

Para que un proceso de un usuario distinto del root pueda ejecutar con éxito la llamada setuid es necesario que ejecute un fichero propiedad de otro usuario que tenga activado el bit setuid, lo cual se consigue poniéndole a dicho fichero los permisos 04755. Criterios de seguridad aconsejan que no puedan crearse ficheros setuid en sistemas de ficheros exportados por NFS, de ahi que no pueden crearse ficheros setuid en los directorios HOME de los usuarios. Hay que crearlos en un directorio local de la máquina donde se trabaja. El único directorio local donde los usuarios normales tienen permiso de escritura es /tmp.

En ningún caso la práctica puede producir error en tiempo de ejecución.

FORMA DE ENTREGA Va a ser utilizado el servicio de recogida de prácticas suministrado por el Centro de Cálculo de esta Facultad y parte del proceso de corrección de las prácticas va a ser automtico (compilación, listado de practicas entregadas etc) por lo cual deben entregarse exactamente como se indica a continuación:

FECHA DE ENTREGA VIERNES 26 NOVIEMBRE 2004