Programación Bajo Plataformas Abiertas

Anuncio
94/100
Programación Bajo Plataformas Abiertas - IE0117
Laboratorio 1
José David Vargas Quirós – carnet B16945
Primera Parte: Primer contacto con el sistema 19/20
1. Se utilizan los comandos cd y ls para explorar el árbol de directorios. Se usan las opciones
-alh de ls para ver los archivos ocultos y el detalle de cada uno. También se usa touch para
crear archivos vacíos sin problema, y nano para manipular archivos de texto. Además se usa el
comando man para leer el manual de nano y otros programas que se utilizan a lo largo del
laboratorio. Capturas de pantalla, salida de la terminal?
2. La lista de paquetes se actualiza con sudo aptitude update y luego se instala el programa
elinks con sudo aptitude install elinks.
Segunda Parte: Usuarios, grupos y permisos 45/50
1. Se agregan los usuarios usando el comando sudo adduser usuario y estableciendo la
contraseña.
Comandos específicos?
2. Se agrega el grupo con el comando sudo addgroup ie0117. Usuario1 se añade al grupo
ie0117 con el comando sudo adduser usuario1 ie0117.
3. La jerarquía de archivos y directorios se creó con los comandos mkdir directorio (para
crear un directorio), touch archivo (para crear un archivo vacío) y el comando cd para
navegar por el árbol de directorios. También se puede crear sin moverse por los directorios,
ajustando las rutas respectivamente.
Comandos?
4. a) Se cambia el grupo de DirectorioBase a ie0117 de manera recursiva usando el comando
chown -R :ie0117 DirectorioBase, estando en la carpeta /tmp/.
b) El usuario dueño de Directorio1 y Directorio2 se cambia a usuario1 con el mismo comando
chown, pero ahora especificando un usuario: chown usuario1 Directorio1
Directorio2, estando en DirectorioBase.
c) Se utiliza el comando chown de la misma forma que en la parte b) para cambiar el usuario
dueño de Archivo1, Archivo2 y Directorio2-1 a usuario2.
5. a) Para Directorio1 se asignan los permisos de lectura, escritura y ejecución al usuario y de
lectura y ejecución al grupo y otros mediante la orden chmod 755 Directorio1.
b) Para Directorio2-2 se asignan los permisos de lectura, escritura y ejecución para el usuario y
X Directorio 2-2, estando en
el grupo y de ejecución a otros con la orden chmod 771
775
Directorio2.
c) Para Archivo3 se establecen los permisos de lectura, escritura y ejecución para el usuario y el
grupo y nada para los otros con el comando chmod 770 Archivo3, estando en Directorio1.
6. a) ¿Cuáles archivos pueden ser editados por usuario1? ¿Por qué?
Usuario1 puede editar los archivos todos los archivos creados porque tiene permisos de lectura
y escritura, de grupo, sobre todos ellos, aunque no sea el dueño. Usuario1 pertenece al grupo
ie0117 que se estableció como grupo de DirectorioBase de manera recursiva, lo que afecta a
Depende de los permisos de grupo de cada
archivo. Véase que al Archivo3 se le dieron
los permisos correspondientes para ser editado.
b) ¿Cuáles archivos pueden ser editados por usuario2? ¿Por qué?
todos los archivos y directorios que están dentro.
Usuario2 solo puede editar a Archivo1 y Archivo2, porque cuenta con permisos de usuario.
Usuario2 no pertenece al grupo ie0117, así que no tiene permisos sobre Archivo3 ni Archivo4.
Aunque sea el propietario de los archivos, podría no tener permiso para editarlos.
c) ¿En cuáles directorios pueden crear nuevos archivos usuario1? ¿Por qué?
Usuario1 puede crear nuevos archivos en todos los directorios, porque cuenta con permisos de
usuario, como dueño de Directorio1 y Directorio2. Aunque no es dueño de Directorio2-1, sí
cuenta con el permiso de grupo de ie0117. Al directorio 3 no se le establecieron los permisos ni
el dueño, pero por defecto se permite al grupo la lectura y escritura, y el grupo sí fue establecido
(de manera recursiva al establecer ie0117 como grupo de DirectorioBase). Lo mismo sucede
con Directorio2-2.
Directorio1 y Directorio2-2
d) ¿En cuáles directorios pueden crear nuevos archivos usuario2? ¿Por qué?
XXX XXXX porque cuenta con permisos de usuario.
Usuario2 solo puede crear archivos en Directorio2-1,
En los demás directorios no tiene permisos de usuario ni de grupo, así que no puede crear
archivos.
7. Se borra el directorio DirectorioBase con el comando: rm -R DirectorioBase, tras
posicionarse en la carpeta /tmp/. La opcion -R realiza un borrado recursivo, eliminando los
archivos del interior y se utiliza especialmente para borrar directorios.
Tercera Parte: Manejo de procesos 30/30
1. Se ejecuta el comando ps que muestra la lista de procesos ejecutándose actualmente por el
usuario, con el PID (Process ID), TTY (terminal asociada), tiempo acumulado y nombre del
ejecutable. Con la opción -a se muestran todos los procesos menos los no asociados con una
terminal. Con la opción -ax muestra todos los procesos del sistema, al eliminar la restricción
por defecto de que los procesos que se muestran deben tener una terminal asociada. Con las
opciones -aux se ven los mismos procesos, pero desplegados de una forma amigable, con el
uso de CPU y de memoria de cada uno.
2. Se instala el programa build-essential con el comando sudo aptitude install buildessential.
3. Se descargó, se compiló y se ejecutó programa1 sin problemas. Al ejecutarlo la terminal
comienza a mostrar “Ciclo Infinito” sin detenerse.
4. Al enviar el programa al background con Ctrl + z la terminal muestra el texto “Detenido”
seguido del nombre del archivo y la ejecución efectivamente se detiene. El comando jobs
muestra el programa como detenido.
5. Con el comando bg se reinicia la ejecución del programa y de nuevo la terminal muestra “Ciclo
Infinito” sin detenerse. La terminal se puede usar. Las instrucciones que se escriban serán
ejecutadas pero sin detenerse el programa, que seguirá mostrando el texto de “Ciclo infinito”.
6. Tras ejecutar el comando fg ya no es posible usar la terminal. Se puede escribir en ella pero las
órdenes son ignoradas. Y el texto de “Ciclo Infinito” continúa apareciendo.
7. El programa se detuvo correctamente con Ctrl + z.
8. Se descargó, se compiló y se ejecutó programa2 sin problemas. La terminal no muestra nada al
ejecutarlo.
9. Desde otra terminal primero se determinó el PID de programa2, con la instrucción ps -au. El
PID fue 9125. Luego se ejecutó kill 9125. Kill por defecto envía la señal TERM. El
programa, en la otra ventana de la terminal mostró el texto: “Señal recibida: TERM”. El
comando kill -USR1 9125 envía la señal USR1, y el programa despliega “Señal recibida:
USR1”, y lo mismo sucede con el comando kill -HUP 9125. El programa se comporta igual
al recibir las señales del comando killall, con las 3 instrucciones: killall -TERM
programa2, killall -USR1 programa2 y killall -HUP programa2.
10. Se intenta terminar programa2 usando Ctrl + c se, este no se finaliza, solamente despliega el
texto “Ctrl-C fue presionado”.
11. Se utiliza el comando kill -KILL 9125, y ahora el programa finaliza normalmente. Lo
mismo sucede con la señal USR2, que finaliza programa2 correctamente.
Descargar