SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Informática. Curso 2005-2006

Práctica 4: Credenciales y redirección

Añadir al intérprete de comandos de la práctica anterior los siguientes comandos.

getid [-g]
Informa de las credenciales reales y efectivas de usuario del proceso. Si se especifgica la opción -g hará lo mismo pero de las credenciales de grupo. En cualquier caso informará tanto del número (la credencial propiamente dicha) como del nombre asociado (login o grupo según el caso). Ejemplo:
# getid
  Credencial real usuario: 15666  infzzz00
  Credencial efectiva usuario 15602 infzzz05
# getid -g
  Credencial real grupo: 1001  i3 
  Credencial efectiva grupo 1070 admin

setid [-g] valor
Establece la credencial efectiva de usuario del proceso. Si se especifica la opción -g hará lo mismo pero dcon la credencial de grupo. Valor puede referirse tanto al número (la credencial propiamente dicha) como al nombre asociado (login o grupo según el caso). En caso de no poder realizar el cambio de credencial informará de ello. Ejemplos:

# setid root
  Imposible cambiar credencial: not owner
# setid 15432
  Imposible cambiar credencial: not owner
# setid -g i4
  Credencial efectiva de grupo cambiada a i4

 $$
Redirección. Modificar la ejecución sin crear proceso (comando exec) así como las ejecuciones en primer y segundo plano de la práctica anterior para que pueda redireccionarse la entrada estándar, la salida estándar y/o el error estándar a un fichero. Se utilizará el símbolo < seguido del nombre de fichero para la entrada estándar, el símbolo > seguido del nombre de fichero para la salida estándar, y el símbolo ) seguido del nombre de fichero para el error estándar. No debe haber espacio entre el símbolo y el nombre del fichero. Ejemplos

# exec wc -l -c <fichero 
# du -a / /usr /home >fichero_salida )f_error &
Las redirecciones DEBEN ser compatibles entre sí y con la ejecución en primer y segundo plano (con entorno cambiado).

pipe com1 % com2
El intérprete de comandos crea dos procesos, el primero de los cuales ejecuta com1 y el segundo ejecuta com2, de manera que la salida estándar del primero se redirecciona a la entrada estándar del segundo usando un pipe. Tanto com1 como com2 representan un ejecutable Y SUS ARGUMENTOS. Ejemplo
# pipe ls -l /usr . . .  /home % wc -l -c

IMPORTANTE

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.

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

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 MAYO 2006