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