====== Actividad 2 ====== ===== Preguntas de la actividad ===== * Cómo uso algún comando o programa? Como accedo a la ayuda? * Qué es un sistema de archivos? * Cómo crear, borrar, mover, archivos y directorios? * Cómo acceso mi llave USB? * Qué es una red de computadoras? Internet? * Bueno, cómo es que se configura la red? Qué es una red de computadoras? * Quiero tener mi propia página web! Cómo? Y si lo quiero en mi casa y quiero que sea accesible al público? * Cómo me comunico con otra computadora? Cómo acceso otra computadora? * Y si mi hermano quiere usar mi compu, le doy mi clave de usuario o puedo hacer algo más? Y que tal si queremos compartir algunos archivos (suid)? * Cómo copio archivos a (desde) otra computadora? (sshfs, scp, rsync) * Cómo dejo funcionando una aplicación en una consola aunque cierre la consola y la sesión? ===== Temas tentativos a cubrir ===== * Man * Apache * Simple network administration (/etc/network/interfaces) * Working with the terminal (filesystem cmds) * Simple system administration (adduser, addgroup) * Remote access (ssh, vnc) * Environment (PATH) * File Systems ===== Explicaciones ===== * Para que sirven los archivos .xsession .bashrc .bash_history ? * Por que algunas archivos tienen un //.// al inicio? * Archivos de configuración locales (puntos) y globales (etc) * Al final configurar el sonido, agregarse a plugdev y otros grupos y montar llaves USB. * Explicar /dev /dev/ttyS0 /dev/sda /dev/sda1 /dev/input/event0 /dev/ttyACM0 /dev/ttyUSB0 . En unix todo es un archivo. * Dibujar un árbol en xournal * Variables de entorno ${HOME} ${DISPLAY} * No deje pasar los errores!! En linux típicamente si el comando no devuelve nada a la consola significa que todo estuvo bien, pero si hubo algún mensaje, siempre hay que revisarlo detenidamente para estar seguro que no es un error o para entender el error y corregir el problema inmediantemente. Un ERROR ignorado solo se ACUMULA! no lo deje. * Que es source y destination (o target)? (para cp mv) * comando argumentos: ej: cp test/prueba6 test/2 Explicar al final: * stdin, stdout, stderr * | * > * %%>>%% * 2>&1 * $? ===== Instrucciones ===== * Comandos que vamos a usar: pwd cd ls mkdir touch mv rm cp adduser su id chmod chown addgroup mount umount cat echo grep * Conteste y anote que hace cada uno de estos comandos. (recuerde el comando man) (google también ayuda) * Para el resto de la actividad trate de ejecutar el comando //ls// después de cada comando para saber que está pasando (que archivos hay en el directorio actual? esto puede ayudar a identificar en que directorio se encuentra) ==== Creando, listando y desplazándonos ==== * Cree los siguientes directorios en su home: mkdir test mkdir test/1 mkdir test/2 mkdir test2 mkdir test2/2 * Cree los siguientes archivos dentro de esos directorios touch test/prueba1 touch test/1/prueba2 touch test/2/prueba3 touch test2/prueba4 touch test2/2/prueba5 * Dibuje un árbol (o raíz) de estos directorios, subdirectorios y archivos. (Cada bifurcación o nodo es un directorio/subdirectorio y cada hoja (o fin de raiz) es un archivo. Suponga que el inicio de la raíz o del tallo del árbol es ///home/// (Cuestionario pregunta 1) * En que directorio me encuentro? (pwd) * Cuál es mi directorio //home//? * Cómo me cambio a mi directorio //home//? : cd o cd ~ o cd /home/ * Qué es //~// ? * Cambie de directorio a test2/2 cd test2/2 #método 1 o cd cd test2 #método 2 cd 2 o cd /home//test2/2 #método 3 o cd ~/test2/2 #método 4 * Que diferencia existe entre estos? * Después de usar el método 4 puede usted usar el método 1 para cambiar al directorio //test/2// ? * Explique que hacen los comandos: cd .. cd . cd ~ cd - * Concluya que significa //..//, //.//, //~//, //-// (cuidado con el //-//, no siempre significa lo mismo) * Desde el directorio actual (y sin usar el comando cd) cree un archivo en el directorio //~/test// llamado //prueba6// * Liste el contenido del directorio test/1 de dos formas * Liste los archivos del directorio /usr/bin por orden de modificación, los más nuevos primero. ==== Copiando, moviendo, eliminando ==== * Copie el archivo //prueba6// al directorio //~/test/2// (use cp, lea el manual para entender la sintaxis) * Siempre liste el directorio fuente y el directorio destino para saber que el resultado fue el deseado (siga haciendo esto en TODOS los siguientes pasos) * Mueva el archivo //prueba6// de vuelta al directorio donde se encontraba originalmente * Cambie de directorio a su //home// y desde ahí (sin cambiar de directorio), borre el archivo //prueba1// . (tiene que buscar donde se encuentra el archivo //prueba1//) * Realice los siguientes comandos: cd mv test2 test * Que sucedió? Dibuje el nuevo árbol. (Cuestionario pregunta 7) * Regrese el sistema de archivos a su estado anterior. ==== Agregando usuarios ==== * Agregue un usuario adicional a su computadora con la clave que usted desee: sudo adduser usuario2 * Liste el directorio ///home// ls /home * Ahora debería ver los //homes// de los dos usuarios * Conviértase en el nuevo usuario: su usuario2 * Introduzca el comando //id// . Para que sirve? * Cámbiese a su nuevo //home// cd * En que directorio se encuentra? (use el comando adecuado para corroborar esto) * Cree un directorio llamado prueba_usuario2 mkdir prueba_usuario2 * Dentro de este directorio cree y edite un archivo con el nombre //test.txt// y ponga el siguiente contenido dentro: Esto es una prueba, esta línea fue escrita por el usuario2 * Regrese a su usuario original: exit * o presionando Ctrl-D * Use //id// para corroborar su identidad. (//echo $USER// que hace?) * Regrese al directorio de su usuario. * Escuche las explicaciones del profesor sobre permisos. * Edite con //nano// el archivo ///home/usuario2/prueba_usuario2/test.txt// y agregue lo siguiente al final del archivo Esto intenta escribir el primer usuario! * Aplique el comando para guardar los cambios (Ctrl-X). Qué pasa? * liste los permisos del archivo ///home//prueba_usuario2/test.txt// (ls -al). Qué hace //-a// y que hace //-l//? * Cambie los permisos del archivo //test.txt// para que su usuario original si pueda editar el archivo. (ponga atención a las explicaciones del profesor) * Cambie los permisos del directorio //prueba_usuario2// del usuario2 para que el usuario1 pueda crear archivos adentro. * 1) Conviértase en usuario2 y cree un nuevo archivo //test2.txt// dentro del directorio //prueba_usuario2//. * 2) Intente editar desde el usuario1 este archivo. Qué pasa? * Borre //test2.txt// * Que hace el comando //su// sin nombre de usuario como argumento? ==== Montando un sistema de archivos ==== === Montando la llave usb === * Inserte una llave USB en su computadora * Observe los mensajes del kernel: dmesg * Al final de los mensajes impresos en pantalla usted debería observar algo similar a esto: [292262.708182] usb 3-1.1.4.4: new high-speed USB device number 11 using ehci_hcd [292262.817993] usb 3-1.1.4.4: New USB device found, idVendor=1307, idProduct=0165 [292262.817999] usb 3-1.1.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [292262.818002] usb 3-1.1.4.4: Product: USB Mass Storage Device [292262.818005] usb 3-1.1.4.4: Manufacturer: USBest Technology [292262.818007] usb 3-1.1.4.4: SerialNumber: 00000000000021 [292262.818349] scsi7 : usb-storage 3-1.1.4.4:1.0 [292263.816610] scsi 7:0:0:0: Direct-Access USB2.0 FlashDisk 0.00 PQ: 0 ANSI: 2 [292263.817064] sd 7:0:0:0: Attached scsi generic sg3 type 0 [292263.818723] sd 7:0:0:0: [sdd] 16099400 512-byte logical blocks: (8.24 GB/7.67 GiB) [292263.819373] sd 7:0:0:0: [sdd] Write Protect is off [292263.819377] sd 7:0:0:0: [sdd] Mode Sense: 00 00 00 00 [292263.820566] sd 7:0:0:0: [sdd] Asking for cache data failed [292263.820568] sd 7:0:0:0: [sdd] Assuming drive cache: write through [292263.824721] sd 7:0:0:0: [sdd] Asking for cache data failed [292263.824724] sd 7:0:0:0: [sdd] Assuming drive cache: write through [292263.959860] sdd: sdd1 [292264.106319] sd 7:0:0:0: [sdd] Asking for cache data failed [292264.106322] sd 7:0:0:0: [sdd] Assuming drive cache: write through [292264.106324] sd 7:0:0:0: [sdd] Attached SCSI removable disk * La líneas a las que hay que poner atención son las siguientes: [292262.818005] usb 3-1.1.4.4: Manufacturer: USBest Technology [292263.959860] sdd: sdd1 * La primera línea les ayudará a reconocer esta memoria USB de otra posible memoria USB (o el disco duro interno de la computadora). * La segunda línea les indica las particiones disponibles en esta memoria: sdd es el nombre del disco duro , sdd1 es la primera partición. * Algunas memorias USB no tienen tabla de partición, por lo tanto lo único que verán será: sdd (sin particiones) * Cada partición es posible que contenga un sistema de archivos y por lo tanto ustedes si así lo desean, pueden montarlo. * Para montar la memoria USB en la computadora: sudo mount /dev/sdd1 /mnt * Ahora los archivos están disponibles en el directorio /mnt. Sin embargo, solo están disponibles para el superusuario. Para que los archivos estén disponibles para otros usuarios del sistema, usted primero debe agregar su usuario al grupo floppy: sudo adduser floppy * Luego debe salir de su sesión gráfica y volver a ingresar * Luego puede utiliar el siguiente comando para montar la memoria USB con permisos para los usuarios normales (que sean parte del grupo floppy) * Primero desmontemos el anterior intento: sudo umount /mnt * Ahora montemos la memoria con los permisos adecuados: sudo mount -t vfat -o gid=floppy,dmask=0007,fmask=0117 /dev/sdd1 /mnt * Cuando necesite retirar la memoria USB, usted debe cerrar todas las aplicaciones y consolas que estén utilizando la memoria USB (cualquier cosa dentro de /media/usb0) y luego realizar el siguiente comando: sudo umount /mnt * Ahora ya puede retirar la memoria USB. * Usted puede automatizar esta funcionalidad instalando un paquete llamado usbmount y editando el archivo /etc/usbmount/usbmount.conf buscando las siguientes líneas y asegurándose de que aparezcan así: ENABLED=1 FILESYSTEMS="exfat vfat ext2 ext3 ext4 hfsplus" FS_MOUNTOPTIONS="-fstype=vfat,gid=floppy,dmask=0007,fmask=0117" * Luego reinicie el sistema de detección de dispositivos en linux: sudo /etc/init.d/udev restart * Inserte la memoria USB y el sistema debería detectarla automáticamente y montarla en los directorios /media/usbX * Si su tarjeta no posee particiones, puede que esto no funcione correctamente. === Montando un sistema de archivos por red === * Instale los paquetes sshfs, ssh, openssh-server. * Pídale a un compañero el IP de su computadora y la clave del usuario2 (o cree un nuevo usuario) * Cree un punto de montaje local: cd ~ mkdir compu_remota * Monte el sistema de archivos remoto localmente: sshfs @ip:/home/ compu_remota * Introduzca la clave del usuario remoto. * Ahora los archivos del usuario remoto están disponibles en el directorio //compu_remota// . Pruebe creando los archivos en la computadora remota y viéndolos en su computadora y viceversa. ==== Accesando una computadora remota ==== * Instale el paquete ssh ssh @ * Ingrese la clave del usuario_remoto y listo, ahora usted se encuentra en la computadora de su compañero. * Dígale a su compañero que ingrese a una consola de texto (Ctrl-Alt-F1) y se logee como usuario y espere un momento. * Pruebe el siguiente comando: echo "Estoy en tu compu" | wall * Debería aparecer en todas las consolas de texto de la otra compu. * Dígale a su compañero que ejecute el siguiente comando en una consola gráfica de la computadora de su compañero: sudo xhost + * Ahora pruebe lo siguiente en su consola remota: export DISPLAY=:0.0 xmessage "Estoy en tu compu más!" * Qué hace la opción //-X// en //ssh//? Pruébelo. Ejecute un comando gráfico en la consola remota. Por ejemplo "avidemux". Qué está pasando? Donde está corriendo //avidemux//? ===== HTML ===== * Instale el paquete apache2 * Edite el archivo /var/www/index.html para que contenga solamente lo siguiente:

Prueba!

Esto es una prueba.

The web server software is running but no content has been addes yet.

* Abra un navegador y diríjase a la página web http://localhost ===== Materiales ===== wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.6-rc2.tar.bz2 ===== Evaluación ===== [[teaching:ie0117:actividad_2:cuestionario|Cuestionario]] ~~DISCUSSION~~