SISTEMAS OPERATIVOS II

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

Práctica 2: Procesos en UNIX. Credenciales

Añadir al shell de la práctica anterior las siguientes funciones de manejo de las credenciales, asi como la ejecución de programas en primer y segundo plano.

getpid
Indica el pid del proceso.
getppid
Indica el pid del proceso padre.
getuid
Indica las credencial 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.
setuid uid
Establece la credencial efectiva del proceso a uid. uid es un entero. En caso de no poder cambiar la credencial, indicará el motivo.
setuidl user
Establece la credencial efectica del proceso a la del usuario user. user es el login de un usuario. En caso de no poder cambiar la credencial, indicará el motivo.
finjer user
Muentra la información del usuario user. Análogo al comando finger del sistema.
com
El shell crea un proceso que ejecuta 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 path del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv. La ejecución es en primer plano. El shell espera a que el proceso creado termine para continuar.
& com
El shell crea un proceso que ejecuta 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 path del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv. La ejecución es en segundo plano. El shell NO espera a que el proceso creado termine para continuar. El shell mantiene una lista de procesos en segundo plano. Para cada proceso el shell guarda la linea de comando del programa que ejecuta, el instante en que comenzó su ejecución, su pid y su estado (activo, parado o terminado). En el caso de parado indica tambien la señal que lo ha parado y en el caso de terminado si es una terminación normal indica el valor devuelto y si es debido a una señal, que señal lo terminó.
back
Muestra la lista de los procesos en segundo plano. Una sola línea para cada proceso. La linea debe indicar: el pid del proceso, el estado (activo, terminado o parado) con el valor devuelto (o en su caso la señal), el instante en que se ha lanzado el proceso y la línea de comando con sus argumentos.
clearlist [-s$\vert$-n$\vert$a]
Elimina de la lista de procesos en segundo plano aquellos que han terminado debido a una señal(-s), que han terminado normalmente (-n) o todos los que han terminado (-a).

Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (setuid, getuid, getpwent, wait...).

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 de las maquinas castro donde los usuarios normales tienen permiso de escritura es /tmp.

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 5 DICIEMBRE 2003