62/100 Programación Bajo Plataformas Abiertas Prof. Francisco Siles Hugo Zúñiga Calvo A96988 Laboratorio 1 Primera parte: 0/20 Segunda parte: 42/50 1. Usuarios, Grupos y Permisos: 1) Agregar 2 usuarios denominados usuario1 y usuario 2: Para agregar usuarios desde la consola en ubuntu se utiliza la instrucción adduser, la cual tiene la sintaxis adduser [opción] “usuario” para el caso que se solicita se utilizó la siguiente instrucción. ubuntu@ubuntu:~$ sudo adduser usuario1 Adding user `usuario1' ... Adding new group `usuario1' (1000) ... Adding new user `usuario1' (1000) with group `usuario1' ... Creating home directory `/home/usuario1' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for usuario1 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y Al utilizar el mismo comando para crear el usuario2 se da la misma respuesta en la consola. 2) Agregar un grupo llamado ie0117 y agregarle el usuario1: Para agregar un grupo desde la consola se utiliza el comando addgroup, ya que ésta es la forma predeterminada para llevar a cabo esta operación en la consola de ubuntu y la instrucción que se creó para probarla fue la siguiente: ubuntu@ubuntu:~$ sudo addgroup ie0117 addgroup: The group `ie0117' already exists. Para agregar al usuario1 a este grupo se utiliza la siguiente instrucción: ubuntu@ubuntu:~$ sudo adduser usuario1 ie0117 The user `usuario1' is already a member of `ie0117'. 3) Crear una jerarquía de archivos en el directorio temporal: Para crear una jerarquía de memoria se utiliza la instrucción mkdir, el cual crea un directorio vacío y para crear los archivos vacíos se utiliza la instrucción touch: ubuntu@ubuntu:/tmp$ mkdir DirectorioBase ubuntu@ubuntu:/tmp$ cd DirectorioBase ubuntu@ubuntu:/tmp/DirectorioBase$ mkdir Directorio1 Directorio2 Directorio3 ubuntu@ubuntu:/tmp/DirectorioBase$ cd Directorio1 ubuntu@ubuntu:/tmp/DirectorioBase/Directorio1$ touch Archivo1 Archivo2 Archivo3 ubuntu@ubuntu:/tmp/DirectorioBase/Directorio1$ cd .. ubuntu@ubuntu:/tmp/DirectorioBase$ cd Directorio2 ubuntu@ubuntu:/tmp/DirectorioBase/Directorio2$ mkdir Directorio2-1 Directorio22ubuntu@ubuntu:/tmp/DirectorioBase/Directorio2$ touch Archivo4 Para comprobar que realmente funcionó la jerarquía de directorios se utilizó el comando ls de manera recursiva como se observa en la siguiente instrucción: ubuntu@ubuntu:/tmp/DirectorioBase$ ls -R Directorio1 Directorio2 Directorio3 ./Directorio1: Archivo1 Archivo2 Archivo3 ./Directorio2: Archivo4 Directorio2-1 Directorio2-2 ./Directorio2/Directorio2-1: ./Directorio2/Directorio2-2: ./Directorio3: 4) Cambiar los dueños de los directorios/archivos: Falta a) Para cambiar los dueños de los archivos o directorios se utiliza el comando chown, el cual tiene la siguiente sintaxis chown [OPCIONES] UserOwner File. Para probar la utilidad de esta instrucción se utilizó la siguiente linea: ubuntu@ubuntu:/tmp/DirectorioBase$ sudo chown usuario1 Directorio1 Directorio2 ubuntu@ubuntu:/tmp/DirectorioBase$ ls -l total 0 drwxr-xr-x 2 usuario1 ie0117 100 2012-03-20 03:04 Directorio1 drwxr-xr-x 4 usuario1 ie0117 100 2012-03-20 03:05 Directorio2 drwxr-xr-x 2 ubuntu ie0117 40 2012-03-20 03:04 Directorio3 Para el caso de las segunda asignación que era poner ciertos archivos como pertenecientes al usuario 2 se obtuvo el siguiente resultado. ubuntu@ubuntu:/tmp/DirectorioBase$ sudo chown Directorio1/Archivo2 Directorio2/Directorio2-1 usuario2 ubuntu@ubuntu:/tmp/DirectorioBase$ ls -l Directorio1 Directorio2 Directorio1: total 0 -rw-r--r-- 1 usuario2 ie0117 0 2012-03-20 03:04 Archivo1 -rw-r--r-- 1 usuario2 ie0117 0 2012-03-20 03:04 Archivo2 -rw-r--r-- 1 ubuntu ie0117 0 2012-03-20 03:04 Archivo3 Directorio1/Archivo1 Directorio2: total 0 -rw-r--r-- 1 ubuntu ie0117 0 2012-03-20 03:05 Archivo4 drwxr-xr-x 2 usuario2 ie0117 40 2012-03-20 03:05 Directorio2-1 drwxr-xr-x 2 ubuntu ie0117 40 2012-03-20 03:05 Directorio2-2 5) Realizar las asignaciones de permisos: En ubuntu existe una opción para que el supersusuario asigne los permisos de un archivo y de esta forma se pueda definir cuales son las libertades que tiene un usuario ya sea el dueño, perteneciente al grupo o cualquier otro. Para llevar a cabo estas asignaciones se utiliza el comando chmod, para el cual se realizó la siguiente línea en la consola: ubuntu@ubuntu:/tmp$ ls -l DirectorioBase Comandos específicos? total 0 drwxr-xr-x 2 usuario1 ie0117 100 2012-03-20 03:04 Directorio1 drwxr-xr-x 4 usuario1 ie0117 100 2012-03-20 03:05 Directorio2 drwxr-xr-x 2 ubuntu ie0117 40 2012-03-20 03:04 Directorio3 En este pedazo de código se puede observar que el cambio de los permisos en el Directorio1 fue efectivo. Falta b) y c) . 6) Respuesta a las preguntas: a) El usuario1 puede editar únicamente el archivo3, ya que éste es el único en el cual el usuario tiene permiso por ser parte del grupo ie0117. b) El usuario2 puede editar el archivo1 y el archivo2 debido a que él es el dueño de los archivos y por lo tanto puede modificarlos de acuerdo con sus facultades. c) El usuario1 puede agregar directorios al Directorio1, Directorio2 y Directoriio 2-2. Esto debido a que en los primeros dos es owner y en el último forma parte del grupo ie0117. d) El usuario2 puede agregar archivos en el directorio Directorio2-1 debido a que es el dueño de este directorio. Falta 7. 2. Manejo de Procesos: 20/30 7) Comando ps con opciones a, ax y aux: Al utilizar el comando ps se despliega la siguiente información, la cual designa los procesos que se estan llevando a cabo en el sistema y además se muestra la identificación del proceso: Faltan preguntas. PID TTY TIME CMD 4082 pts/0 00:00:01 bash 5370 pts/0 00:00:00 ps Si se utiliza el comando ps -a se cambia lo que muestra la consola por la siguiente información: ubuntu@ubuntu:/tmp$ ps -a PID TTY TIME CMD 3364 tty3 00:00:01 bash 3365 tty5 00:00:01 bash 3366 tty2 00:00:01 bash 3367 tty6 00:00:01 bash 3368 tty4 00:00:01 bash 3654 tty1 00:00:00 bash 5397 pts/0 00:00:00 ps La diferencia entre esta opción y la pasada es que cuando se utiliza -a, la ventana de comandos muestra todos los procesos de todos los usuarios y no únicaente los del usuario actual. Si se utiliza el comando ps -aux se despliega en la pantalla la información de todos los procesos que se están llevando a cabo en la computadora, incluyendo los procesos del root. 8) Ejecución del programa programa1: La ejecución del programa1 muestra un ciclo infinito que se repite infinitamente sin detenerse. Cuando se utiliza el comando CTRL-Z el programa detiene su ejecución, estto se sabe debido a que el comando jobs muestra que el programa está detenido. Cuando se utiliza el comando bg, el programa vuelve a ejecutarse, sin embargo todavía se puede usar la consola debido a que el programa se ejecuta en el background. Cuando se ejecuta el comando fg, el programa vuelve a mostrar la frase ciclo infinito en la pantalla de la consola y ésta no se puede seguir usando. 9) Ejecución del programa programa2: La ejecución del programa2 muestra una pantalla en blanco, que no hace nada. Cuando se le envían las señales USR1, TERM y HUP lo que indica la ventana es que se recibió la señal pero no hace nada específico con ello. Cuando se presiona CRTL-C lo único que hace es imprimir en pantalla que se recibió la señal de CRTL-C. Cuando se le envía -KILL el proceso se detiene por completo.