Fundación Código Libre Dominicano LABORATORIO DE GNU/LINUX

GUIA PRACTICA DE CERTIFICATION
GNU CERTIFIED FUNDAMENTOS

Practica #1 “Historia”
1. Que es GNU/Linux? es la denominación defendida por Richard Stallman y otros para el sistema operativo que utiliza el kernel Linux en conjunto con las aplicaciones de sistema creadas por el proyecto GNU. Comúnmente este sistema operativo es denominado como Linux, aunque según Stallman esta denominación no es correcta. 2. Historia de UNIX. Unix® (o UNIX) es un sistema operativo portable, multitarea y multiusuario; desarrollado en principio por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy. Hoy día, la palabra UNIX se utiliza para denotar diferentes conceptos dependiendo del contexto en que es usada. Esto suele dar lugar a confusiones:UNIX - familia: desde el punto de vista técnico, UNIX se refiere a una familia de sistemas operativos que comparten unos criterios de diseño e interoperabilidad en común. Esta familia incluye más de 100 sistemas operativos desarrollados a lo largo de 20 años. No obstante, es importante señalar que esta definición no implica necesariamente que dichos sistemas operativos compartan código o cualquier propiedad intelectual. 3. Estructura de GNU/Linux. El Sistema Operativo GNU/Linux tiene una estructura de jerarquías con permisos entre usuarios que permite tener privacidad y diferenciar nuestros archivos de los ajenos. Esta regla no es cumplida por el ROOT (súper-usuario) que es el encargado de tareas administrativas, soluciones de problemas, etc. Es decir, el súper-usuario nunca es detenido por nada, y todo lo puede hacer. Los usuarios comunes tienen este poder, pero solo dentro de su home. 4. Genealogía de GNU/Linux.

1

Práctica Fundamentos

5. Movimiento del Software Libre y Licencia GPL El Movimiento de software libre comenzó en 1983 cuando Richard Stallman anunció el proyecto GNU. La meta del movimiento es dar libertad a los usuarios de ordenadores reemplazando software con términos de licencia restrictivos por software libre. La mayoría de los miembros del movimiento de software libre creen que todo el software debería venir acompañado con las libertades declaradas en la definición de software libre. Muchos sostienen que es inmoral prohibir o impedir a las personas que haga efectivas esas libertades y que estas son necesarias para crear una sociedad decente donde los usuarios puedan ayudarse mutuamente y tomar el control sobre el uso de un ordenador.

Questionario:
1. ¿Nombre cinco personalidades del Software Libre? 2. ¿Quienes son los encargados del desarrollo del Kernel Linux? 3. ¿Que es la FSF? 4. ¿Que tipo de reglas de mercado controlan el desarrollo del SL? 5. ¿Cuales son las 4 libertades otorgadas por la licencia GPL? 6. ¿Nombre cinco tipo de licenciamiento? 7. ¿Como se obtienen una distribución de un sistema operativo libre? 8. ¿Cual es la diferencia entre entre Free y Open Software? 9. ¿Como podemos vender software libre? 10. ¿Porque es necesario una ley para proteger el software libre en el país?

2

Práctica Fundamentos

Práctica #Capítulo 2”
Objetivo: El alumno accesará el BIOS para obtener información critica sobre el ordenador, pre-instalación. Herramientas a usar en estas prácticas: mkswap, dd, swapon, y swapoff, du, df, free, cfdisk y fstab

Introducción

Todos los ordenadores comparten la característica en común de tener un BIOS. Un BIOS no es mas que el sistema básico de entrada/salida Basic Input-Output System. es un código de interfaz que localiza y carga el sistema operativo en la RAM. Ésta proporciona la comunicación de bajo-nivel, operación y configuración con el hardware del sistema, que como mínimo maneja el teclado y proporciona salida básica durante el arranque. La BIOS usualmente está escrita en lenguaje ensamblador. Ejemplo: ● En un ordenador HP al pulsar la tecla “DEL tenemos acceso al BIOS. ” ● Para identificar la memoria RAM de nuestro ordenador después de haber accesado el setup, buscamos la paleta de opciones avanzadas (advanced), luego pulsamos ENTER en procesos, memoria y cache (Processor, Memory and Cache). ● Se repetirá el mismo proceso para identificar el procesador. ● Para identificar los discos duros de nuestro ordenador una ves en el setup, buscamos la paleta avanzado (advanced) la opción configuración de dispositivos IDE (IDE device configuration). Desarrollo de la práctica:

Práctica #1 “El BIOS”
Lo primero que debemos hacer es identificar la memoria, procesos, y discos de nuestro ordenador. Para esto usualmente con solo presionar la tecla de “DEL (puede variar ” dependiendo el ordenador) al encender el ordenador tendremos acceso a el BIOS. Entrar al BIOS, configuración y identificación de periféricos. En esta práctica debemos entrar al BIOS de un equipo y efectuar preguntas al alumno para que identifique entre algunas cosas: 1. Discos.- Tamaño, Orden y Nombre, etc 2. Orden de Arranque 3. Activa o no el password del BIOS 4. Memoria usada en el vídeo 5. Identificar Reloj del Procesador y Monto de RAM

Práctica #2 “ISOS”

Crear un iso mkisofs y quemarlo. a) $ mkisofs -J -o datos.iso /home/nombre-usuario/Carpeta/ Esto crea una imagen de ISO-9660 con el nombre 'datos.iso' del directorio '/home/nombre-usuario/Carpeta' b) $ dd if=/dev/cdrom of=archivo.iso
Esto crea una imagen de ISO-9660 con el nombre 'archivo.iso' del CD que insertemos en el drive cdrom.

c) $ cdrecord -V speed=4 dev=0,4,0 -data /home/usuario1/archivo.iso 3 Práctica Fundamentos

Graba el fichero 'archivo.iso' ubicado en '/home/usuario1/' en el dispositivo 'dev=0,4,0'

Práctica #3 “Disco de Arranque”

Hacer un disco floppy de arranque: $ dd if=root.img of=/dev/fd0 bs=1024 conv=sync ; sync

Práctica #4 “Practica Particionar con FDISk”
Particionar luego dar formato a una memoria o disco Primero puedo ver las particiones actuales:
$ fdisk -l /dev/sda

Luego para particionar con fdisk El fdisk se inicia digitando como root fdisk dispositivo en la linea de comandos. El dispositivo puede ser algo como /dev/hda o /dev/sda. Los comandos básicos del fdisk son: p imprimir la tala de partición n crea una nueva partición d Elimina una partición q sale sin guardar los cambios w escribe los cambios a la tabla y luego sale A continuación le damos un ejemplo... Iniciamos el fdisk sobre el dispositivo sda:
# fdisk /dev/sda lo que nos indica que es un memory stick o algo Parecido. De inmediato imprimimos las tablas usando el comando p. Command (m for help): p Disk /dev/sda: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes

Sabemos que es de 1.2Gb, pero ahora lo sabemos con: 64 * 63 * 512 * 621 = 1281982464 bytes. Decidimos preservar 128Mb del total para espacio de swap, dejamos por esto 1153982464. Si utilizamos una partición primaria para swap quiere decir que podemos dejar tres para las particiones ext3.
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-621, default 1):<RETURN> Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

luego el tipo de formato $ mkfs.vfat /dev/sda1 Es todo lo que tenemos que hacer si deseamos que sea vfat o podemos usar la opción -t para definir asi: $ mkfs -t vfat /dev/sda1 4 Práctica Fundamentos

Práctica #5 “Particionado y montaje con Gparted”

Objetivos: Una ves que conocemos la configuración básica de nuestro ordenador debemos decidir como dividiremos nuestro disco, y cuantos sistemas operativos queremos instalar en nuestro disco duro. Introducción: Es posible particionar el disco duro de diferentes maneras, en el ejemplo dado a continuación es utilizando Gparted desde un sistema ya instalado. El mismo ejemplo aplica para particionar desde una Instalación. Abrimos desde el menú inicio>Herramientas del sistema>Gparted (necesaria contraseña de root). 1. Automáticamente, se analizan las particiones de nuestro(s) disco(s) duro(s). 2. Si tenemos varios discos duros, por defecto aparecerá /dev/hda, pero tenemos arriba a la derecha una ventana desplegable para elegir otros dispositivos. 3. En el caso de que tengamos particiones NTFS o MAC y no hayamos instalado los paquetes antes mencionados, nos aparecerán dichas particiones, pero sólo nos permitirá verlas, nunca retocarlas. 4. Para modificar de cualquier forma una partición, ya sea primaria o no, necesitamos que esté desmontada. Ello lo podemos hacer desde el propio Gparted (clic derecho en una partición que salga con el candado, Desmontar) o bien desde la consola: umount rutadelapartición (Para hacer esto en la consola, la partición tiene que estar determinada en el fstab) Posiblemente no nos deje hacer esto desde la consola, por no tener permisos suficientes, por tanto haremos: sudo umount rutadelapartición Vemos que es mucho más sencillo clic derecho en la partición en el Gparted, yo he probado las dos cosas y las dos funcionan bien, pero la gráfica es más rápida (ya sé que en el terminal es más "interesante") 5. Bien, una vez desmontada la partición, ya podemos actuar sobre ella, mediante las siguientes acciones: 6. Redimensionar: como su propio nombre indica, cambia el tamaño a la partición 7. Mover: Mueve de sitio del disco la partición seleccionada. 8. Borrar: Elimina por completo una partición 9. Copiar: Copia una partición y Pegar: Pega la partición copiada 10.Aplicar: Procede a realizar todas las ordenes que se hayan indicado. No hay un límite al número de operaciones que se pueden hacer de una sola vez, pero no es aconsejable acumularlas cuando son de importancia (por ejemplo m odificar el tamaño). 11.Tras realizar las operaciones, el propio Gparted escanea nuevamente el disco modificado, y podremos ver como se han quedado los cambios. 12.Si hemos realizado cambios en el disco en que tenemos instalado Ubuntu, nos recomendará que reiniciemos el equipo.

Práctica #6 “Practica de swap”
1. Crear swap desde un archivo Objetivos: Una ves tenemos nuestro sistema funcionando, podríamos experimentar cierta carencia de memoria a pesar de haber configurado nuestra memoria swap en la instalación, otra posible situación es que cambiemos el monto de memoria RAM. Para esto podemos fácilmente asignarle mas memoria virtual SWAP desde un archivo. 5 Práctica Fundamentos

El comando “dd”: La sintaxis básica del comando es la siguiente: dd if=origen of=destino donde if significa "input file", es decir, lo que deseas copiar y of significa "output file", o sea, el archivo destino (donde se van a copiar los datos); origen y destino pueden ser dispositivos (lectora de CD, diskette, etc.), archivos, etc.
Nos cambiamos a root $ su – root Nos dirigimos al directorio /root # cd /root comprobamos cuanto swap teneomos inicialmente # grep SwapTotal /proc/meminfo Creamos una archivo de 50 Mega aprox. # dd if=/dev/zero of=/root/swaptemp bs=1k count=50000 Cambiamos los permisos a restringidospara no ser borrado por usuarios sin querer # chmod 600 swaptemp Convertimos el archivo en tipo swap # mkswap swaptemp lo cargamos como un espacio de swap # swapon swaptemp Comprobamos que se cargó. # grep SwapTotal /proc/meminfo

2. Crear swap desde una partición 1. Primero usando cfdisk elegimos una partición que podemos usar como swap. # cfdisk /dev/sda 2. Seguimos los pasos para elegir la partición y utilizamos una partición con los pasos a seguir y luego elegimos el tipo swap 82 desde el menú. 3. Luego digitamos una entrada en el /etc/fstab similar a esta: /dev/sda5 none swap sw 0 0

Práctica #7 “Identificación del hardware”

Inventario de hardware con las herramientas lspci y en gráfico hal. Esto es muy simple solo ejecutamos los comandos: lspci lspci -v lspci -vv

Podemos augementar estas explicaciones con comandos como: lsusb lspci lspcmcia

6

Práctica Fundamentos

Práctica #8 “Conectividad”

Herramientas a usar ifconfig, route, /etc/resolv.conf, y gráficamente network-admin. Establecer la Dirección de ip 1. Si es Estática Para establecer una dirección IP estática y su mascara y en encenderla, simplemente ejecuamos la siguiente sentencia: # ifconfig eth0 150.1.1.31 netmask 255.255.255.0 up Nos lee la información de la interfaz de red (IP, máscara, etc.) para confirmar los cambios que deseamos efectuar # ifconfig eth0 Para detener el servicio de red 'eth0' # ifdown eth0 Para arranca el servicio de red 'eth0' # ifup eth0 2. Si es Dinámica Para requerir una dirección desde un servidor dhcp que este en la red. # dhclient eth0 1. Establecer la Mascara # ifconfig eth0 150.1.1.31 netmask 255.255.255.0 2. Establecer la Pasarela route add default gw 10.0.0.1 3. Establecer los DNS Debemos escribir al archivo /etc/resolv.conf e incluirle la siguiente linea: nameserver 10.0.0.254 nameserver 196.3.81.5

7

Práctica Fundamentos

Capítulo 3 1. Instalar UBUNTU
Cómo instalar paso a paso Ubuntu 1. Primero, asegúrese tener la versión correcta para su arquitectura. 2. Reinicie su equipo con el CD que acabamos de crear en el lector de CDs. En la pantalla de bienvenida (en inglés), para elegir el castellano, solo hay que pulsar F2 y seleccionarlo de la lista. 3. En el escritorio de Ubuntu aparecerá un icono llamado Install, ejecútelo. 4. El primer paso es elegir el idioma 5. Elegir la zona horaria 6. Elegir el tipo de teclado 7. Sus datos personales 8. Decirle al instalador dónde debe instalarse. Asegúrese de que escoge la opción correcta, o podría formatear una partición no deseada. Existen varias opciones al instalar: • Formatear todo el disco duro. Elija esta si desea borrarlo todo y realizar una instalación limpia de Ubuntu. • Espacio libre contiguo. Ubuntu usará un trozo de espacio libre en su disco duro para instalarse, esta es la opción más recomendable si desea conservar su antiguo sistema operativo y/o sus datos. En mi caso no apar ece porque no tenía espacio suficiente en ninguna partición. • Particionamiento manual. Si se siente valiente, puede hacer a mano una o varias particiones para ubuntu. Tenga en cuenta que la partición debe tener al menos 2 GB, y debe habilitar una partición para la memoria de intercambio («Swap»). Esta opción no es recomendable si nunca ha hecho una partición o nunca ha usado Linux antes. 9. En la pantalla le mostrará los datos para que los revise. Asegúrese de que todo está en orden, y pulse siguiente para comenzar a instalar Ubuntu en su ordenador. 10.El instalador mostrará su progreso mientras el sistema se instala… 11.Si todo sale bien, solo deberá reiniciar para arrancará ubuntu y podrá comenzar a disfrutarlo.

2. Instalar OpenSuSE
Cómo instalar paso a paso SuSE 10.1 1. Colocar DVD en la unidad y reiniciamos el ordenador. 2. Reiniciar y entrar en la BIOS del PC y configurarlo para que en el orden de arranque la unidad de CD 3. En el menú inicial, del que elegimos ‘Installation’. 4. Primero, comprueba el funcionamiento del ratón. 5. Elegimos nuestro idioma 6. Aceptamos la licencia. 7. Elegir si el modo de instalación: Nueva Instalación o Actualización. 8. Seleccionamos la primera opción. 9. Elegimos el reloj y la zona horaria. 10.Seleccionamos escritorio. 11.Las particiones, en la sección ‘Configuración de la instalación’. Nos podemos 8 Práctica Fundamentos

encontrar con dos posibilidades: 1) Que vayamos a instalar SuSE en todo el disco o 2) Que queramos que cohabite con otro sistema. 12.En el primer caso, clicamos en Particionamiento, personalizamos la instalación y seleccionamos nuestro disco duro y todas sus particiones. 13.La instalación eliminará todo lo que haya en ese disco duro 14.En el segundo caso (instalar SUSE manteniendo un sistema anterior) tendremos que clicar en Particionamiento, lo personalizamos y editamos las particiones. 15.Ahora verás que aparece un gráfico. Pues bien, en él tienes que encontrar una franja coloreada bajo un sistema de archivos representando el SO presente 16.Debe dejar como mínimo 4 Gb libres. 17.Si tu partición del otro SO ocupa todo, tendrás que redimensionarla. 18.Coloquese sobre su franja coloreada, dale al botón secundario y elige ‘Redimensionar‘. 19.Reduce su tamaño (deja al menos 4 Gb a SUSE) y acepta 20.Volvemos al panel de ‘Configuración de la instalación’, elige el disco en el que instalar y elige al sistema que utilice el espacio libre contiguo, ya tendrá al menos 4 Gb, se los acabas de dejar con el comando ‘Redimensionar‘. El resto de opciones de este panel déjalas tal cual. 21.Confirmamos las licencias. 22.El sistema comienza a preparar el disco y a instalar aproximadamente 2.13 Gb 23.Al final llegarás a Host (nombre). Déjalo tal cual. Aceptar. 24.Elige tu contraseña de Root. 25.Configura Red o déjalo tal cual 26.Puede ahora elegir actualizar el sistema si te ha reconocido bien la conexión 27.Llegamos a la pantalla de usuario (nombre, clave, etc). 28.Una vez escrita la configuración, aparecen las notas de la versión y comienza a configurar el hardware. 29.Si no te lo reconoce todo a la primera, no te preocupes: una vez iniciado el sistema podrás cambiar cosas de hardware. 30.Terminado la instalación puedes disfrutar de un Open SUSE

3. Instalar CentOS
Cómo instalar paso a paso CentOS 5

Requerimientos de Sistema
Hardware recomendado para operar :
• • •

Memoria RAM : 192 MB (Minimo) . Espacio en Disco Duro : 850 MB (Minimo) - 2 GB (Recomendado) . Procesador : Intel Pentium I/II/III/IV/Celeron, AMD K6/II/III, AMD Duron, AMD Athlon/XP/MP .

9

Práctica Fundamentos

Proceso de Instalación 1. Arranque de CD-ROM : Primeramente debe asegurarse que su BIOS se encuentre configurado para leer el CD-ROM al momento de inicializarse su PC o Servidor, esto es necesario para que se ejecute el "shell" de instalación CentOS en lugar del sistema operativo que tiene instalado en su disco dur o. 2. Arranque de CentOS : Inicialice su sistema con el Disco 1 de CentOS colocado en su lector de CD-ROM. Si configuró correctamente su BIOS para leer CD-ROM's al arranque, 3. Proceso inicial y detección de Hardware: Estando en la pantalla anterior, simplemente esperando u oprimiendo Enter, iniciará el proceso para detección de Hardware y proceso de instalación a través de una consola gráfica , esta secuencia puede durar entre 10 o 15 segundos, mientras observa mensajes descriptivos sobre su sistema. Si desea realizar su proceso de instalación mediante linea de comandos, entonces deberá introducir la secuencia linux text. 4. Verificación de medios (CD-ROM's) : Posteriormente será presentado con la opción de realizar una prueba de integridad sobre los CD-ROM's de instalación CentOS, esta prueba dura entre 10 y 15 minutos para los 4 CD's de instalación. Si no desea realizar esta prueba, seleccione la opción Skip . La pantalla es la siguiente : 5. Bienvenida : Es desplegado un mensaje de bienvenida de CentOS con instrucciones de navegación, simplemente oprima Next para continuar con el proceso. 6. Lenguaje del Sistema: La siguiente selección que debe hacer es sobre el idioma que desea para su proceso de instalación y sistema, puede elegir castellano (Spanish): 7. Configuración de T eclado : Seleccione el tipo de teclado en base a su sistema; Español si posee un teclado con tecla eñe y caracteres latinos, o bien, estadounidense de lo contrario. 8. Tipo de Instalación ( Actualización, Escritorio personal, Estación de Trabajo, Servidor Personalizada ) : Seguido, será realizado un proceso de auto, detección para determinar si posee una instalación pre-existente de CentOS, de encontrarse será presentado con una opción de actualización, de lo contrario, podrá elegir entre 4 modalidades -- Escritorio Personal, Estación de Trabajo, Servidor o Personalizada -- cada una de éstas presenta una breve descripción de su funcionamiento. Para el caso de esta guia, se asumirá una configuración de Servidor, ya que CentOS se caracteriza por su estabilidad en esta área. A continuación se muestra esta consola : 9. Partición de Disco Duro : Posteriormente, debe realizar el particionamiento de su disco duro, CentOS le ofrece dos alternativas para llevar acabo este proceso. (NOTA: Es recomendable lea el proceso de Pre-Instalación en caso que no este familiarizado con el concepto de particionar discos duros ). 1. Particionamiento Auto mático: Como su nombre lo implica, CentOS realiza el particionamiento del disco duro a dimensiones pre-determinadas, sin embargo, esto implica generalmente que debe borrar toda la información existente en su disco duro. 2. Partición manual co Disk Druid: Para usuarios con amplio conocimiento del n proceso de partición, pueden optar por hacer su propia distribución de espacio con esta opción. 10.Se recomienda seleccionar Particionamiento Automático puesto que implica el método más directo y sencillo para instalar CentOS, no obstante, si utiliza la opción de Disk Druid tome en cuenta los factores de redimensionamiento que utilice para 10 Práctica Fundamentos

sus particiones. La principal ventaja de utilizar la opción automática, se debe a que las particiones son creadas en el orden y tamaño recomendado por CentOS para operación óptima. 11.Administrador de Arranque ("B oot Loader") : Posteriormente debe confirmar la instalación del administrador de arranque ("Boot Loader") GRUB; si CentOS ser el á único sistema operativo instalado en su equipo, este paso no debe ser de mayor trascendencia. Sin embargo, si posee más de un disco duro, o bien, además de CentOS existirá otPráctica #7 “Identificación del hardware”ro sistema operativo, esta configuración tiene implicaciones en la manera que es inicializado su sistema. La pantalla es la siguiente : 12.Configuración de R : Seguido debe indicar los parámetros para acceso a red, ya ed sea manualmente con información de nodos IP y DNS , o bien, indicando una configuración automática vía DHCP . 13.Configuración Coratfuegos ("F irewall") : Aquí debe especificar si desea instalar un mecanismo de "Firewall" para proteger su sistema. De ser así, también tiene la opción de habilitar determinados servicios para que éstos no sean afectados por el "Firewall", tales como: SSH , Servidores Web , Servidores de Correo y FTP. La pantalla es la siguiente : 14.Idiomas adicionales para Sistema : Esta consola le permitirá definir idiomas alternos para su sistema, además del seleccionado en primeras instancias : 15.Zona Horaria del Sistema : Aquí debe definir la zona horaria para su instalación. La pantalla es la siguiente : 16.Definición de usuario raí (root) : Posteriormente debe indicar una contraseña z para el usuario raíz ("root") del sistema, como su nombre lo indica, éste será el usuario maestro de la instalación y tendrá control absoluto de acceso sobre toda aplicación en CentOS. La pantalla se muestra a continuación : 17.Selección de Aplicaciones/ Paquetes : En esta consola tiene la opción de elegir la serie de aplicaciones que serán instalados, por "default" se encontraran seleccionados una serie de paquetes que corresponden a una configuración típica de servidor, esto debido a que con anterioridad fue seleccionado este tipo de instalación. No obstante, puede agregar aplicaciones a su discreción, tales como un ambiente gráfico u otra función necesaria para cumplir con sus requerimientos.A continuación se muestra esta consola : 18.Selección de Aplicaciones/ Paquetes : Seleccionadas las aplicaciones, al oprimir el botón Siguiente iniciará la instalación de aplicaciones, dependiendo de su Hardware, este paso puede demorar entre 20 o 40 minutos. Asegúrese también de tener cerca de su PC los discos de instalación y no dejarla desatendida, ya que durante este proceso necesitará colocar los distintos CD-ROM's conforme los requiera su instalación.A continuación se muestra esta consola : 19.Ultimo paso : Felicidades ! : Ha terminado de instalar satisfactoriamente CentOS Linux. Ahora sólo debe reinicializar su sistema para entrar a su ambiente Linux ! . La pantalla se muestra a continuación :

11

Práctica Fundamentos

Capítulo 4
1.El X
A. Identificación de la arquitectura del X Server 1. Servidor X 2. Protocolo X 3. Xlib 4. Toolkit y Widget B. Administradores de ventanas 1. Gnome, kde, wmaker a. temas, fondos , etc. C. Administrador de pantalla a. gdm, kdm, xdm

Práctica #1 “Editar el archivo configuración gdm.conf”

P practica: editar manualmente /etc/X11/gdm.conf para lograr lo siguiente: . Cambiar el autologin y el login temporizado para permitir que un usuario ingrese automáticamente y probarlo. R. editor buscar linea: AutomaticLogin=nombre_usuario

AutomaticLoginEnable=true

TimedLoginEnable=true TimedLogin=nombre_usuario TimedLoginDelay=30... el tiempo

2. Desde el entorno gráfico: gdmsetup Cambiamos el tema de ingreso y permitimos la entrada remota.

Práctica #2 “Habilitar XDMCP y peticiones TCP en GDM”
Objetivos: Manejar desde un PC varios equipo ejecutando XDMCP via TCP como transporte. Es necesario tener GDM, por defecto en Ubuntu, como login gráfico. Una vez logeados como root, editamos (con tu editor favorito) el fichero "/etc/gdm/gdm.conf", y buscamos la etiqueta "[xdmcp]", encontraremos algo así: Enable=false y ponemos Enable=true Habilitar el TCP lo hacemos así en la siguiente linea: DisallowTCP=true y ponemos DisallowTCP=false

Práctica #3 “Arrancar conectados a las X de otra maquina con GDM”

Objetivos: Manejar desde un PC varios equipo. Una opción es tener el SSH o T elnet corriendo en tu maquina remota, pero no tendremos un entorno gráfico completo (con SSH y la opción -X se pueden ejecutar aplicaciones X). Es necesario tener GDM, por defecto en Ubuntu, como login gráfico. Una vez logeados como root, editamos (con tu editor favorito) el fichero "/etc/gdm/gdm.conf", y buscamos la etiqueta "[servers]", encontraremos algo así: 0=Standard #1=Standard 12 Práctica Fundamentos

Bien, cambialo por: # En F7 esta tu equipo local, en F8 el remoto 0=Standard 1=Terminal -query # Donde es el equipo con las X activas O si tenemos muchos equipos a los queremos conectarnos: # En F7 tu equipo local, en F8 una pantalla para que elijas a que equipo conectarte. 0=Standard 1=Chooser Recuerda tener el XDMCP y TCP activo en el host remoto para que acepte las peticiones X. Espero que os sirva de ayuda. Ahora cuando reinicie el ordenador te apreceran dos pantallas de ingreso al X, una local, la acostumbrada y otra para ingreso via XDMCP remotamente.

Práctica #4 “Habilitar xdmcp en tsclient para ubuntu”
Para habilitar el xdmcp en el cliente del terminal server (tsclient/rdesktop en ubuntu). Por defecto el programa terminal server client trae el xdmcp deshabilitado. Para corregir esto simplemente instalamos el xnest: # apt-get install xnest Si aún no has habilitado el xdmcp, en Gnome y Ubuntu podemos: 1. Menú System -> Administration -> Login window (también podemos ejecutar gdmsetup). 2. En la pestaña Remote cambiamos el Style a “same as local”. Esto solo afecta la ventana que le desplega al usuario al in tentar ingresar a nuestro sistema. 3. Deberá reiniciar el GDM lo que también mataría su sesión de X. # kill -HUP `cat /var/run/gdm.pid` Si prefiere podemos editar el archivo a mano así: 1. Edite a /etc/gdm/gdm.conf (asegurese que no exista ninguna configuración de conflicto en el gdm.conf-custom el cual es de mayor jerarquía) 2. Descomente R emoteGreeter en la sección daemon. #RemoteGreeter=/usr/lib/gdm/gdmlogin ..- el comentario # debe ser eliminado 3. Under the xdmcp section, change Enable to true. Enable=false ..- cambie el false por true 4. Deberá reiniciar el GDM lo que también mataría su sesión de X. # kill -HUP `cat /var/run/gdm.pid`

Práctica #5 “Configurar el Xorg”
Primeramente para buscar ayuda sobre el archivo de configuración ejecutamos: man 5 xorg.conf Podemos generar un xorg.conf que lo mas probable funcione en caso de que se nos dañe asi: # Xorg -configure Nota: Fijese que no imprima ningún error antes de continuar. Este proceso generará un archivo de configuración en la capeta en la cual usted se encuentra de nombre: /root/xorg.conf.new

13

Práctica Fundamentos

Ahora podemos probarlo así:
# X -config /root/xorg.conf.new

Si todo esta bien deberemos copiarlo y reemplazar el que tenemos ahora así:
# cp /root/xorg.conf.new /etc/X11/xorg.conf

Práctica #6 “Cambiar la Resolución del Xorg”
Vamos a la sección “Screen” del /etc/X11/xorg.conf
Section "Screen" Identifier "Default Screen" Device "S3 Inc. ProSavage KN133 [Twister K]" Monitor "Generic Monitor" DefaultDepth 24 # Skipping some text to improve readability SubSection "Display" Depth 24 Modes "1024x768" EndSubSection EndSection

Agregamos las Modes lines y la profundidad por defecto a nuestro servidor de X para que sean digamos de 24 bits a 1024x768 por defecto.

Reiniciamos el GDM con: # /etc/init.d/gdm restart o el comando que convenga dependiendo la distribución en uso

Práctica #6 “Cambiar el teclado del Xorg”
Para cambiar el X utilice un teclado digamos internacional, nos dirigimos a la sección “InputDevice” y agregamos la opción “XkbLayout” para que señale para lla distribución del teclado que deseamos. Como por ejemplo mostramos como cambiar a español:
Section "InputDevice" Identifier "Generic Keyboard" Driver "keyboard" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "do" EndSection

Práctica #7 “Configurar su mouse en el Xorg”
Si su mouse no es detectado, verifique todos los modulos o drivers para ver si fueron cargados con lsmod. Si este si fué detectado, complete la sección “InputDevice”. En este ejemplo le mostraremos como colocar dos opciones: Protocol (la cual lista el protocolo usado por el mouse – la mayoría usan PS/2 o IMPS/2) y ZAxisMapping (la cual permite que funcione la ruedita si su mouse la usa.
Section "InputDevice" Identifier "TouchPad Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mouse0" Option "Protocol" "IMPS/2" Option "ZAxisMapping" "4 5" EndSection

14

Práctica Fundamentos

Práctica #8 “Xs Remota”

A) Usar mas de un X en una PC o HOST Primero vaya al terminal 1 # Ctrl + Alt +F1 desde root ejecute # X :1 & Para encender un X server en el terminal próximo al gráfico en F8, dirijase allí para confirmar: # Ctrl + Alt + F8 Regrese donde estaba # Ctrl + Alt + F1 Exporte su display para poder enviar todo hacia este nueve X # export DISPLAY=:1.0 Luego todo lo que ejecute podra visualizarlo alli # xeyes..... etc Continue desde el terminal ejecutando las partes que conforman a GNOME, como son: panel, nautilus y metacity.. siga probando..???

Práctica #9 “Exportar el Display”
Para exportar aplicaciones del X y enviarlas a otro host vía el IP # export DISPLAY 10.0.0.126:0.0 Envía las aplicaciones ejecutadas en el host local hacia el host con el IP 10.0.0.126 y se desplegará el display 0 y el monitor 0 del host local en el remoto. Para traer un escritorio desde otra máquina que esta exportando: X -query 10.0.0.126 :1 Desplegará en el Servidor X local en el display 1 el display exportado por el host con IP 10.0.0.126.

Práctica #10 “Usar VNC”

Si encendemos el vncserver ya sea manualmente o a través del gráfico vía el centro de control de Gnome y el utilitario Escritorio Remoto (vino-preferences), en el cual podemos elegir las opciones de control y si debemos ser contactados antes de permitir el acceso. # vncserver Luego para conectarnos ejecutamos: $ xvncviewer 192.168.1.2 Abrimos una conexión con el host de IP '192.168.1.2' a partir del visor VNC

Práctica #11 “Usar el programa xhost y xauth”
xhost: usando este programa puede dar permiso a cualquier usuario en una máquina dada a escribir gráficos en su pantalla. Ejemplo: usted está sentado frente a una máquina llamada host1. Para permitir el acceso a cualquier programa en el host2 a su pantalla en host1 debería escribir el siguiente comando, esto habría que escribirlo en un shell en el host1: # xhost +host2 15 Práctica Fundamentos

xauth: es una autentificación basada en cookies y mucho más sofisticada. Con xauth se puede dar acceso a los usuarios de forma individual. Es mucho más seguro que xhost. La autentificación usa una cookie alojada en el fichero .Xauthority en el directorio personal de los usuarios. Si la máquina remota tiene una cookie válida en este fichero entonces se garantizará el acceso. Para copiar la cookie desde la máquina frente a la que está sentado (host1) al host desde donde quiere lanzar el programa (host2) puede usar uno de los siguientes métodos: 1) xauth extract - host1:0.0 | ssh host2 /usr/X11R6/bin/xauth merge o 2) scp ~/.Xauthority host2:/

Práctica #12 “Usar el terminal server client”
Nos dirigimos al menu: Aplicaciones -> Internet -> Cliente Terminal Server

Práctica #12 “ssh -x para usar recursos gráficos remotamente”
Si deseamos usar una aplicación gráfica desde un host en nuestro host local: # ssh -X usuario@10.0.0.126 Luego podemos simplemente ejecutar desde el shell que se nos oferta cualquier aplicación del host remoto en el host local, ej. gimp.

Práctica #13 “xnest para ejecutar mas de un servidor X localmente” Práctica #14 “Mas Xs Remotas”
Para ingresos remotos desde el administrador de ingreso o GDM en el caso de GNOME a entornos gráficos servidos por hosts remotos. Escenarios En un edificio hay que dar soporte a los usuarios de todos los departamentos distribuidos en 8 planta por tal motivo hemos configurado un servidor X para conectarnos a las maquinas remotamente y proveerles el servicio sin necesidad de hacer presencia física en los diferentes departamento. En el servidor x tenemos que configurar gdmsetup • Activar entrada accesible • Desactivar la denegación de TCP al servidor Xserver • Activar XDMCP luego de configurar estas opciones la maquina remota tienen que darnos acceso con la siguiente sentencia xhost + Tenemos que asegurarnos que tengamos corriendo el puerto 6000 o TCP X11. Para eso hacemos un nmap la maquina donde nos vamos a conectar y nos aseguramos que nuestro server también lo tenga corriendo. nmap 192.168.1.126 Luego de estos pasos tenemos que saber que queremos exportar su escritorio para ver el error presentado en la pantalla del usuario o exportarle una aplicacion sugerida.

16

Práctica Fundamentos

Para traer un escritorio desde otra maquina ejecutamos la sentencia X -query 10.0.0.126 :1 Tenemos que exportar la variable del display de la máquina remota. export DISPLAY:10.0.0.126:0.0 Para volver a restaurar el display de nuestra maquina usamos el comando export DISPLAY=:0.0

Práctica #15 “Usar el Xnest”

Xnest es parte del paquete de xorg-X11-xnest, y su función es tener un cliente X dentro de una ventana. Para saber mas sobre xnest leer el man de Xnest. También es recomendada este tutorial de LinuxJournal donde habla de posibles funciones de como experimentar con nuevos desktop dentro del escritorio. Lo primero que hay que entender es la diferencia entre servidor y los puertos. También es importante entender como trabaja X. El primer punto es ver que se corre default en el puerto 0, y que nuevos X se deberán correr en :1 :2 … etc. La instrucción seria: # xnest :1 Xnest tiene algunas opciones importantes, ac quiere decir access control, si se pone xnest:1 por default no permitirá nuevas instrucciones. Con –ac deshabilitamos este control y podemos ingresar instrucciones desde nuestro escritorio defecto: # xnest :1 --ac & Cuando tenemos esto solo nos da una ventana en azul o negro, sin nada mas, si queremos correr algo sencillo (y que no coma recursos) podemos ejecutar una terminal. Como no podemos correr nada desde la X en ese momento correremos los comandos desde el display 0 osea desde nuestro escritorio actual. Corremos una terminal y ejecutamos el comando: # xclock -display :1 Inclusive podemos pasar algunos parámetros como: # xclock -foreground "Red" -geometry +450+250 -display :1 Este es un pequeño programa pero también podemos correr cosas mas elaboradas como una desktop de gnome. Para hacer esto simplemente debemos mandar el desktop a la terminal X. # gnome-session -display :1

Práctica #16 “Instalar fuentes True Type”

Para instalar fuentes de Windows en GNU/Linux sigue estos pasos. crea un nuevo directorio para tus fuentes True Type. Normalmente, yo creo el directorio /usr/local/fonts/ttf, pero tu puedes elegir cualquier directorio que quieras. Este directorio debe ser accesible, pero no escribible, por todos los usuarios. En las siguientes instrucciones uso este nombre de directorio, si eliges otro, debes adaptar las instrucciones. 17 Práctica Fundamentos

Copia tus fuentes Ahora, copia todas las fuentes TrueT ype fonts (*.ttf) que necesitas dentro de este directorio. Si quieres copiar los archivos de una partición Windows, estas fuentes normalmente se encuentran en el directorio XWindow/fonts, o en WINNT/fonts en el caso de Windows NT o 2000. Diciendo a XWindow sobre tus fuentes. Ahora, ingresa los siguientes comandos en secuencia en una ventana de terminal: cd /usr/local/fonts/ttf ttmkfdir > fonts.scale mkfontdir Si ves el directorio debes ver dos archivos nuevos además de las fuentes TrueT ype "fonts.scale" y "fonts.dir". Estos archivos simplemente contienen una lista con el nombre completo de las fuentes para cada fuente TrueT ype. Finalmente, debes agregar el nuevo directorio a la lista de rutas en que XWindow busca las fuentes. Edita el archivo /etc/X11/fs/config (o /etc/X11/xfs/config), busca la linea que empieza con "catalogue", y agrega el directorio de las fuentes al final de la lista, separado por una coma. Eso es todo, puedes probarlo corriendo el programa de "Font selector" del menú utilidades de Gnome, GIMP o OpenOffice. Deberías ver inmediatamente los nombres de las fuentes TrueT ype en la lista de fuentes.

18

Práctica Fundamentos

CAPITULO 5
1. Documentación y corrección de fallos

Práctica #1 “El man”
Abrir el man en manera simple con: $ man man Luego practicar navegar, explicar el lector en cual se abre que es less por defecto y como podemos cambiarlo desde el archivo de configuración del man /etc/manpath.config en la linea que define el pager. Efectuar búsquedas de cadenas de texto. Cambiar el man a otros idiomas ej. man -L it man Cambiarlo permanentemente de idioma desde el archivo de configuración

Práctica #2 “PS”

# ps Procesos activos por una terminal del usuario actual, aportando identificador del proceso, terminal asociada, porcentaje de tiempo de procesador ocupado y nombre del proceso. # ps -A | grep bash Busca en todos los procesos activos del sistema los que contengan el término 'bash' # ps auwx Todos los procesos activos del sistema, con información asociada (% de CPU, % de memoria, etc.) # ps u Procesos activos por una terminal del usuario actual, con información asociada # pstree Procesos activos del sistema jerarquizados en forma de árbol # ps -u nombre_usuario” Para ver los procesos que está utilizando un usuario utilizas # ps aux Para ver todos los procesos que se ejecutan en el sistema utilizas

Práctica #3 “Comando TOP”
El comando top Ahora bien, el comando ps nos muestra una radiografía de los procesos en el momento, pero no nos muestra los cambios que se van teniendo. Para esto contamos con el comando top.

Práctica #4 “Comando kill”
# kill -9 100 Elimina el proceso con PID '100' de forma inmediata, sin espera (señal número 9) # kill -l Muestra todas las señales disponibles en el sistema con el comando 'kill' # kill 100 19 Práctica Fundamentos

Elimina el proceso con PID '100' (al no especificar el número de señal, se emplea por defecto la 15: finalización segura, de forma ordenada) # killall -HUP inetd Aplica la configuración del fichero inetd.conf, sin detener el proceso inetd (ejecutado al realizar una modificación en el fichero) # killall top Restaura (reinicia) el utilitario top. # killall httpd Elimina todos los procesos con nombre 'httpd'

Práctica #5 “Arranque con livecd”

A. Arrancar un sistema con grub dañado 1. Debe reiniciar 2. crear carpeta donde montara: mkdir montar 3. Montar la barra del sistema que deseas cambiar: mount /dev/sda1 montar/ 4. Montar los sistemas de archivos de proceso y dev dentro del chroot mount -t proc none /montar/proc mount -o bind /dev /mount/dev 5. chroot a carpeta monto a barra / chroot montar /bin/bash 6. Puedo por ejemplo instalar lo que necesite: apt-get install grub aplicaciones 7. Editar archivo de configuración de /boot/grub/menu.lst 8. Reinstalar grub: # grub-install 9. Reiniciar equipo B) Arrancar con livecd para práctica de chroot y reparar un Xorg 1. Arrancar desde el cd cambiando el BIOS 2. Crear directorio donde montaremos mkdir montar 3. Montamos la barra dentro de este recién creado directorio mount /dev/sda1 montar 4. chroot a montar chroot montar 5. Copio el archivo de configuración del livecd al del disco cp /etc/X11/xorg.conf montar/etc/X11/xorg.conf 6. Desmontamos el chroot exit 7. Reiniciamos el equipo y retiramos el livecd.

Práctica #6 “Recuperar un sistema de ficheros dañado”
El sexto campo del fstab, (fs_passno), lo usa el programa fsck para determinar el orden en el cual se van a chequear los sistemas de ficheros cuando el sistema arranca. El sistema de ficheros raíz debería llevar fs_passno igual a 1, y otros sistemas de ficheros deberían llevar fs_passno igual o superior a 2. Sistemas de ficheros en un mismo disco serán chequeados secuencialmente y si tienen el mismo valor de (fs_passno) el orden será el orden de los registros en '/etc/fstab', pero sistemas de ficheros en diferentes 20 Práctica Fundamentos

discos con el mismo valor para fs_passno, serán chequeados al mismo tiempo para utilizar el paralelismo disponible en el equipo. Si fs_passno (sexto campo) no está presente o tiene un valor de 0, fsck asumirá que ese sistema de ficheros no necesita ser chequeado. En caso de que la partición con el sistema de ficheros raíz no termine satisfactoriamente no se prosigue con el montaje de otros sistemas de ficheros sino que el sistema solicitará la contraseña de root para ejecutar fsck manualmente. Si esto le ocurre alguna vez y no es usted un experto limítese a chequear la partición con la opción -y que en lugar de preguntar cosas quizás incompresibles para usted asumirá contestación afirmativa por defecto, ya que es la contestación menos comprometida en estos casos. Una vez finalizado el chequeo deberá hacer 'shutdown -r now' para rearrancar. # fsck -fy /dev/hda3 # shutdown -r now No es posible chequear un sistema de ficheros si este está montado con opciones de lectura/escritura. Si se llegara a forzar tal posibilidad de alguna manera, la destrucción de todo el sistema de ficheros sería inevitable pero afortunadamente fsck se da cuenta de ello y no lo intentará chequear si se da tal circunstancia. Para desmontar y remontar puede ejecutar: #mount -n -o remount,ro /dev/hda4 Para forzar que fsck revise la partición use la opción -f. Es decir # fsck -fy /dev/hda3 El fsck es un interfaz a varios comandos específicos del tipo fsck.tipofs. Por ejemplo fsck.ext3. El comando mount sin argumentos le informa los tipos de ficheros que actualmente están montados. La información clave de un sistema de ficheros se sitúa en el superbloque. Esta estructura está duplicada por motivos de seguridad. Si alguna vez obtiene un error indicando que no se puede montar el sistema de ficheros debido a que el superbloque está dañado intente hacer lo siguiente sin olvidar la opción -S. También debe ir seguida de un cheque de todo el sistema de ficheros. # mke2fs -S /dev/... # e2fsck -fy /dev... Esta operación no garantiza la recuperación de sus sistema de ficheros La información del superbloque puede ser obtenida mediante: # dumpe2fs /dev/hda4 Le permitirá saber cual es el máximo número de veces que se puede montar su sistema de ficheros antes de estimar necesario un chequeo y cuantas veces ha sido montado desde el último chequeo y en que fecha tuvo lugar. También puede ver donde se almacenan sus superbloques.

Práctica #7 “Recuperar un disco duro dañado”

Puede ocurrir que un sistema se vuelva inestable y solicite con frecuencia el chequeo de alguna partición. Puede que a pesar de que aparentemente el fsck solucione el problema este reaparezca nuevamente con mucha frecuencia, o incluso a cada nuevo arranque. Una partición de swap dañada provocará cuelgues del sistema de forma más o menos aleatoria.

21

Práctica Fundamentos

Si algún programa o librería dinámica compartida esta dañada puede que el sistema no pueda arrancar normalmente y deba arrancar desde un sistema de rescate. En cualquier caso en este tipo de situaciones puede que los elementos destinados a reparar su sistema estén igualmente dañados y por ello lo mejor es arrancar desde un disco de rescate y hacer un chequeo a todas las particiones incluidas las particiones de swap. Use badblocks desde algún disco externo ya que quizas el del disco este siendo afectado por el problema mismo. Los primeros CDs de las distribuciones suelen ofrecer la opción de arrancar en modo rescue. Los Live-Cds son la mejor opcion. El utilitario badblocks es independiente del tipo de sistema de ficheros que use la partición. Puede ser ext3, reiserfs, linuxswap, umsdos, vfat, etc. La opción -o de badblocks produce una salida que puede ser usada por e2fsck o por mke2fs ambos con la opción -l. Estos programas también admiten la opción -c para hacer que e2fsck o mke2fs usen a su vez badblocks. Realmente es muy sencillo y conveniente sin embargo le recomendamos lo siguiente. Pase badblocks a todos los sistemas de ficheros presentes en el disco afectado uno a uno y anote o guarde lo resultados. (Por ejemplo redirigiendo salida a un disco sano). Pase e2fsck con la opción -c en las particiones dañadas. De esta forma los sectores defectuosos ya no se usarán. Formatee primero a bajo nivel usando alguna utilidad de la BIOS u otra proporcionada por el fabricante del disco duro. Formatee usando para revisar los bloques defectuosos # mkfs -c /dev/hda4 Particiones y fsck Si has modificado una partición tienes que modificar el /etc/fstab. Desde la consola con # fdisk -l le dará la información sobre sus particiones. Para arreglarlo en la consola escribes gedit /etc/fstab y saldrá el archivo para que lo modifiques. Si te sigue saliendo es que tienes bloques malos. Entoces desmonta la partición: # umount /dev/hda4 Luego: # fsck -c -y /dev/hda4 Eso arreglará los problemas de disco. Este comando dependiendo del tamaño del disco suele tardar un rato.

Práctica #8 “Gestor de arranque (grub)”

A.-Editar menú de arranque, agregar imagen de kernel Cuando grub se inicia podemos intervenir usando primero: 1. La tecla ESC 2. luego dirigirnos a la entrada del menú deseada 3. Luego presionamos la “e” para editar 4. Procedemos a editar, ej. al final cambiar al splash o quiet o ro o el titulo 5. Después de ENTER para que lo reconozca proceder a presionar “b” para boot 6. Si deseamos que sea permanente necesitamos montar el disco como anterior. 1. 2. 3. 4. 22 B.- Agregarle contraseña de texto a grub Si deseamos que nadie pueda ingresar a grub sin una contraseña, iniciamos normalmente el sistema. Abrimos el archivo /boot/grub/menu.lst Nos dirigimos a la linea que dice password topsecrete Colocamos la contraseña que deseamos, para la practica la dejamos como esta. Práctica Fundamentos

5. Luego reiniciamos y ya esta, grub nos pedirá una contraseña al intervenirlo. C.- Agregarle contraseña encriptada a grub 1. Si deseamos que nadie pueda ingresar a grub sin una contraseña encriptada, iniciamos normalmente el sistema. 2. Abrimos el archivo /boot/grub/menu.lst 3. Nos dirigimos a la linea que dice password --md5 4. Vamos a la linea de comandos y digitamos: grub-md5-crypt ... luego enter password: dominicana Retype password: dominicana $1$OaYzq1$hQNJqxuGB/oM7.etvNtbM. 5. Copiamos este hash encriptado a nuestro archivo menu.list y ponemos: password - -md5 $1$OaYzq1$hQNJqxuGB/oM7.etvNtbM. 6. Luego reiniciamos y ya esta, grub nos pedirá una contraseña al intervenirlo. 7. Recuerde que la contraseña no es el hash sino “dominicana” D.- Eliminar single user 1. Desde grub podemos eliminar las entradas de single o recovery. 2. Ponerle contraseña a grub para que no puedan pasarle el parámetro single

23

Práctica Fundamentos

CAPITULO 6
Sistemas de archivos

● ●

Crear una jerarquía de 5 niveles de directorios con un archivo en cada directorio y practicar moverlos, cambiarle los permisos, renombrarlos, hacer enlaces simbólicos, renombrarlo y copiarlo,etc. Practica de grupos y usuarios: eliminar usuarios, agregar grupos, con los comandos chmod, chgroup, etc. Crear un nodo de un Dispositivo Practica de archivos de /proc

Práctica #1 “Usuarios y Grupos”
El archivo de usuario, /etc/passwd, es un archivo de texto plano, donde cada línea es una entrada distinta cuyos campos se separan con el caracter :. El primero de estos campos es el nombre del usuario, el segundo el password de forma encriptada, a través de un proceso irreversible. Si en el campo de password aparece simplemente un caracter x o * propiamente tal, entonces el sistema utiliza passwords shadow, medida de seguridad para almacenar los passwords en otro archivo de nombre /etc/shadow, accesible solamente por el superusuario (root) y los programas de autenticación propios del sistema. A continuación examinaremos con mayor exactitud la estructura de estos dos archivos:
/etc/passwd

(línea de ejemplo):

root:x:0:0:Administrador del Sistema:/root:/bin/bash ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | |- Shell por defecto del | | | | | | usuario | | | | | | | | | | | |- Directorio home del usuario | | | | | | | | | |- Campo opcional y utilizado solamente | | | | con fines informativos. | | | | | | | |- GID, identificador numérico único del grupo primario del usuario | | | | | |- UID, identificador numérico único del usuario | | | |- Password encriptado del usuario | |- Nombre de usuario /etc/shadow

(línea de ejemplo):

root:$1$zjxtZLtl$UHNQhadJEfRdsSL386N1HO.:11181:0::::: ^ ^ ^ ^ | | | |- Días antes de que el | | | password pueda ser cambiado | | | | | |- Días desde el 1o de Enero de 1970 | | en que el password fue cambiado

24

Práctica Fundamentos

| | | |- Password encriptado | |- Nombre de usuario Calculo para buscar el día que fue cambiado ese password del cambio del password [k1k1@GNU cea]$ expr 13359 \* 24 \* 60 \* 60 1154217600 [k1k1@GNU cea]$ date -d "1970-01-01 1154217600 sec" Sun Jul 30 00:30:00 AST 2006 [k1k1@GNU cea]$ date -s "1970-01-01 1154217600 sec"

Los campos adicionales son opcionales, generalmente dejados en blanco y representan los días antes de que el password expire en que el usuario es advertido; días después de que el password ha expirado en que la cuenta es deshabilitada; días desde el 1 de Enero de 1970 en que la cuenta fue deshabilitada y un campo reservado, respectivamente. Los grupos, por otra parte, se definen en un archivo llamado group, también ubicado en el directorio /etc. Su composición se detalla a continuación:
/etc/group

(línea de ejemplo):

daemon::2:root,bin,daemon ^ ^ ^ ^ | | | |- Lista de usuarios pertenecientes al grupo, separados por | | | comas | | | | | |- ID numérico único del grupo | | | |- Password encriptado del grupo (generalmente no se utiliza) | |- Nombre del grupo

A pesar de que todos estos archivos se manipulan a través de comandos especiales (passwd, chfn, chgrp, adduser, addgroup, etc.), al ser de texto plano pueden ser manejados con un simple editor de texto. Tanto en el archivo de password como de grupos debe existir por lo menos una entrada esencial para el funcionamiento del sistema: la del usuario root.

Práctica #2 “Permisos de Archivos”
Los permisos de archivos son definidos para usuarios, grupos y otros. Usuario sería el nombre bajo el cual se ingresa al sistema (ej. root). Mas allá, los usuarios pueden ser organizados dentro de grupos para una mejor administración y control. Cada usuario pertenece por lo menos a un grupo por defecto. Otros incluye a cualquiera que las categorías anteriores excluyen. A continuación se muestra un ejemplo de la salida del comando ls -l:
drwxr-x---rw-r--r-2 jperez fcld 1 jperez fcld 4096 969 Dec Dec 28 21 04:09 02:32 tmp lala

25

Práctica Fundamentos

-rwxr-xr-x

1 jperez fcld

345

Sep

1

04:12

archivo

La información relevante en la primera columna es el tipo de archivo seguido por los permisos del mismo. En la segunda columna aparece la cantidad de subdirectorios existentes bajo el indicado (1 si es archivo). La tercera y cuarta columnas muestran el propietario del archivo y el grupo al cual el archivo pertenece, respectivamente. Los contenidos de las demás columnas son obvios. Para nuestro ejemplo la primera entrada es tmp. El primer caracter en la primera columna es d, lo que significa que tmp es un directorio. Las otras entradas son archivos simples, tal como lo indica el símbolo -. Ahora analizaremos en mayor profundidad la primera columna:
d rwx r-x --^ ^ ^ ^ | | | |- Otros | | | | | |- Grupo | | | |- Usuario propietario del archivo | |- Tipo de archivo

Seguido del tipo de archivo, los próximos nueve caracteres definen los permisos. Estos permisos están dados en grupos de a tres cada uno. Los primeros 3 caracteres son los permisos para el el usuario propietario. Los próximos tres son permisos para el grupo, y los últimos tres definen los permisos de acceso para todos los demás. A su vez, existen tres posibles atributos para los permisos de archivos: - Permiso de lectura solamente. Indica si el archivo puede ser leído; en caso de ser un directorio indica que sus contenidos pueden ser listados.
r

- Permiso de escritura. Indica si el archivo puede ser escrito o modificado. Para un directorio define si es posible hacer cambios a los contenidos del directorio. Si no existe el permiso de escritura, entonces no será posible borrar, renombrar o crear un archivo.
w

- Permiso de ejecución. Define si el archivo puede ser ejecutado. En caso de tratarse de un directorio, este atributo decide si es que el usuario tiene el permiso para entrar al mismo, buscar dentro o ejecutar programas desde ese directorio.
x

Tomemos como ejemplo los permisos de tmp, que son drwxr-x---. El propietario de este directorio es el usuario jperez y el grupo al cual pertenece el directorio es fcld. Esta serie de permisos permite acceso completo de lectura, escritura y ejecución al directorio al usuario jperez. Los permisos del grupo son r-x: no hay permiso de escritura dado por lo que los miembros del grupo fcld pueden entrar y listar los contenidos del directorio, no pueden crear nuevos archivos o subdirectorios dentro. Además del propietario y del grupo, nadie más tiene ningún tipo de acceso al directorio porque sus atributos para otros están vacíos (---). Para el archivo lala los permisos son -rw-r--r--. Aplicando lo anterior, podemos ver que el propietario del archivo (jperez) puede leer y modificar el archivo. Los miembros del grupo fcld pueden leer el archivo pero no modificarlo; al igual que todos los demás.

26

Práctica Fundamentos

Práctica #3 “Modificación de Atributos”

Para cambiar los permisos se utiliza el programa chmod (CHange MODe, cambiar modo). Es necesario ser el usuario propietario del archivo, o root. Los permisos pueden ser definidos para los usuarios propietarios (u), grupos (g) y 'otros' (o). Un ejemplo de chmod se muestra a continuación:
$ chmod u-x,g+w,o+rw archivo

Este comando elimina el permiso de ejecución para el usuario, coloca el bit de acceso a escritura para el grupo y le da a todos los demás acceso de lectura y escritura. Los permisos para este archivo antes de ejecutar el comando eran -rwxr-xr--; despues del comando son -rw-rwxrw-. Primero se escoge utilizar u, g u o seguido por un signo + para agregar un permiso, para quitarlo y = para limpiar cualquier permiso previamente asignado y solamente dejar lo que sea especificado. También es posible utilizar a para dar permiso a todos los usuarios. Utilicemos los permisos de -rwxrwxrwx para archivo y trabajemos en ellos:
$ chmod g-wx archivo

Al hacer esto estamos quitando los permisos de escritura y ejecución para los miembros del grupo al cual pertenece el archivo. Sus permisos serían ahora entonces: -rwxr--rwx. Como vimos anteriormente, también es posible especificar permisos para usuarios, grupos y otros en el mismo comando, pero separados por comas.
$ chmod g+wx,o-rwx archivo

A los miembros del grupo se les ha dado acceso de escritura y ejecucion pero todo acceso ha sido removido para los usuarios que no son miembros de ese grupo. Los permisos del archivo son ahora entonces -rwxrwx---.
$ chmod a+x archivo

Le da acceso de ejecución a todos. Los permisos ahora son -rwxrwx--x. Especificar a aqui no es esencial, simplemente podríamos haber dicho +x, a (All) se asume por defecto. Por lo tanto el comando chmod +x archivo es equivalente a lo indicado arriba.
$ chmod go-rx archivo

Si los mismos bits de permiso se utilizan para asignar/quitar a usuarios, grupos u otros entonces se pueden indicar juntos como se indica. Los permisos son ahora entonces
-rwx-w---$ chmod ug=rwx archivo

Esto coloca los permisos del archivo en exactamente lo que se ha especificado: ahora, los premisos son:
-rwxrwx--$ chmod o=g archivo

Los permisos del archivo para 'otros' ahora son colocados igual a lo que los permisos para el grupo están asignados:
-rwxrwxrwx

Existe otra manera en que se pueden especificar los permisos de archivos: los bits r, w y x tienen asignados un numero, proveniente de la notacion binaria que se utiliza para almacenarlos como bits propiamente tal:
r=4 w=2 x=1

Ahora es posible utilizar números, que son la suma de los distintos bits de permisos. Por 27 Práctica Fundamentos

ejemplo, rwx seria 4+3+1 = 7. rx seria 4+1 = 5. Por lo tanto el comando chmod ahora se convierte en:
$ chmod xyz archivo

donde x, y y z son números que representan los permisos del usuario, grupo y otros, respectivamente. Cada numero es la suma de los permisos a colocar y se calculan como se indico anteriormente.
chmod 644 archivo 6 = 4 + 2 = rw, 4 = r, 4 = r

Como podemos ver, los permisos para archivo se han colocado como -rw-r--r--. Esta manera es mas simple y rápida de asignar permisos; puede ser un poco mas tediosa al comienzo pero con la practica se logra la costumbre. A continuación se explican los distintos permisos como una referencia:
0 - --1 - --x 2 - -w3 - -wx 4 – r-5 – r-x 6 – rw7 - rwx

Práctica #4 “Modificación de Propietario y Grupo”

Además de los permisos del archivo, también es posible modificar al propietario y grupo del mismo. En este caso se utiliza el programa chown (CHange OWNer, cambiar propietario) y su sintaxis es mucho mas simple. Al igual que en el caso anterior, es necesario ser el usuario propietario o root para poder hacer esto:
$ chown nuevo-usuario archivo $ chown novato archivo

En estos ejemplos se cambia al usuario propietario del archivo archivo por los usuarios nuevo-usuario y novato, respectivamente. Para cambiar el grupo, se utiliza el comando chgrp:
$ chgrp nuevo-grupo archivo Esto coloca al grupo nuevo-grupo

como el perteneciente al archivo archivo.

También es posible cambiar simultáneamente el usuario propietario y el grupo de un archivo a través del comando chown, separándolos por punto:
$ chown jperez.fcld archivo Lo que asigna a jperez como perteneciente al grupo fcld.

propietario del archivo archivo, además de hacer este

Práctica #5 “Configuraciones de Umask”
El comando umask puede usarse para determinar el modo por defecto de creación de ficheros en tu sistema. Normalmente, las configuraciones de umask incluyen 022, 027 y 077 (que es el más restrictivo). Normalmente el umask se pone en /etc/profile, así se aplica a todos los usuarios en el sistema. La máscara de creación de archivos puede calcularse restando el valor deseado de 777. En otras palabras, un umask de 777 supondría que los ficheros nuevos creados no contendrían permiso de lectura, escritura o ejecución para nadie. Una máscara de 666 causaría que los ficheros nuevos creados tengan una máscara de 111. Por ejemplo, puedes tener una línea que se parezca a ésta:
# Establecer la mascara por defecto umask umask 033

Asegúrate de poner el umask de root en 077, lo que discapacitará el permiso de lectura, escritura y ejecución para otros usuarios, a menos que se cambie explícitamente usando chmod. En este caso, los directorios recién creados tendrían permisos 744, obtenido restando 033 de 777. Los ficheros nuevos creados usando el umask 033 tendrían permisos de 644.

28

Práctica Fundamentos

CAPITULO 7
Práctica #1 “Navegar el Shell”
1. Dirijase a su directorio home -> 2. Cree un nuevo directorio con su nombre -> 3. Cámbiese a este nuevo creado directorio -> 4.Cree un archivo con cat con cinco nombre 1 debajo del otro -> 5. Despliegue el archivo en pantalla con cat -> 6. Haga copia de este con cp -> 7. Elimine a archivo -> 8. Cambie el nombre de copia a archivo -> 9. Complete el comando uptime con tab -> 10. Comando de ver historial de comandos 11. Ver ultimo 12 comandos -> 12. Como ejecutar ultimo comando sin conocerlo 13. Como ejecuto el comando 12 del history -> 14. Como ejecuto comando empieza upt -> 15. Qué tipo de ruta es ls /home/nombre -> 16. Cuál es la ruta relativa a home de /home/nombre/Desktop -> 17. Despliegue la ruta absoluta de usr/share/gnome/ -> 18. Cambie del directorio actual a /usr/share/gnome -> 19. Confirme que cambie com pwd -> 20. Regrese al directorio home, de tres maneras con cd -> 21. Cree un directorio de nombre Carpeta 22. Elimine el directorio Carpeta con rmdir y rm 23. Cree tres directorios uno dentro del otro con mkdir -> 24. Cámbiese a los directorios creados para confirma -> 25. Retroceda con los directorios especiales .. y confirme -> 26. Cree tres directorios mas con mkdir -> 27. Vaya directamente a C/ con cd -> 28. Dirijase al directorio 3/ usando los ../ cuando sea posible -> 29. Identifique su posición actual -> 30. Cree un archivo oculto y vacío con el comando touch -> 31. Actualice la base de datos del comando locate -> 32. Localice el archivo que creo oculto usando locate -> 33. Pruebe buscando el archivo con el nombre parcial -> 34. Practique crear mas de un archivo con touch -> 35. Practique crear archivo de nombre con espacio -> 36. Practique crear archivo de nombre con espacio -> 37. Usar el man con los comandos, ej. touch -> 38. Buscar opciones del comando touch on help -> 39. Qué tecla presionamos para salir del man -> 40. Cómo buscamos la palabra “opciones” en el man -> 41. Usando el “*” y [] liste todos en /etc que empiezan a,b,c -> 42. Liste todos en /etc/ que no empiezan con numeros -> 43. Liste los archivos en /etc/ que empiezan con dos digitos -> 44. Ejecute dos comandos cd y pwd en un comando -> 45. Ejecute dos comandos y pause cd y pwd en un comando -> 46. Probar el segundo plano ejecute ls despues de pausa 3 Sec 47. Direccione la salida de un comando a un archivo -> 48. Direccione a la entrada comando el contenido un archivo -> 49. Despliegue el correo del usuario para ver el archivo -> 50. Agregue contenido passwd al archivo dos veces -> 51. Direccione los errores de un comando a un archivo -> 52. Despliegue el contenido de archivo.err 53.Cuente el numero de usuario en el sistema con who y w -> 54. Cuente las palabras en archivo -> 55. Cámbiese al terminal 3 y muestrelo en pantalla -> 1. 2. 3. 4. Cual es la diferencia entre ls -l -a y ls -a -l y ls -al o ls -la Dirijase a su directorio home Crearemos un Directorio llamado Trabajo Hagamos este directorio nuestro directorio de trabajo -> -> -> -> cd o cd ~ o cd /home/$USER mkdir sunombre-nombre ej. mkdir jesus cd jesus cat > archivo, nombres, Ctrl+D cat archivo cp archivo copia rm archivo mv copia archivo upt<tab> -> history history 12 -> !! !12 !upt absoluta nombre/Desktop ls /usr/share/gnome/ cd /usr/share/gnome/ pwd cd , cd ~ y cd /home/nombre -> mkdir Carpeta -> rmdir o rm Carpeta mkdir -p 1/2/3 cd 1, cd 2 y cd 3 cd ../, cd ../, cd ../ mkdir A/B/C cd A/B/C cd ../../../1/2/3/ pwd touch .nombre updatedb locate .nombre lcoate .nomb touch 1 2 3 4 5 touch “archivo nombre” touch archivo\ nombre man touch touch - -help man man, luego “q” man man, luego /opciones ls [a-c]* o ls [abc]* ls [^0-9]* ls [0-9][0-9]* cd /usr/share/gnome ; pwd cd /usr/share/gnome ; delay 3 ; pwd -> (sleep 5; ls )& ls /etc > archivo mail usuario < /etc/passwd mail, luego el numero del mensaje cat /etc/passwd /etc/passwd>>archivo ls /no-existe /etc 2> archivo.err -> cat archivo.err who | wc -l y luego w | wc -l cat archivo |wc -w Ctrl+Alt+3 , luego ingrese, tty Ninguna cd mkdir Trabajo cd Trabajo

29

Práctica Fundamentos

5. Cree tres archivos vacios con touch de nombre arch1,2 y 3 -> touch arch{1,2,3} 6. Vamos a crear una variable con el valor de estos archivos -> variable=”arch1 arch2 arch3” 7. Listemos por valor los archivos creados -> ls -l $variable 8. Eliminemos la variable del entorno -> unset variable 9. Comprobemos que fue desetablecida -> echo $variable 10. Qué hacemos para que variables esten en los shells hijos -> export variable 11. Luego comprobemos ejecutando un nuevo shell hijo -> xterm, luego echo $variable 12. Liste todas las variables en este shell actual -> env, export o echo $<tab><tab> 13. Despliegue y explique el valor de la variable PATH -> echo $PATH 14. Analice y despliegue el valor de su variable del prompt -> echo $PS1 15. Despliegue su archivo history con cat y con el comando -> history y cat ~/.bash_history 16. Usando “echo !!” podemos ver el ultimo comando -> echo !! 17. Podemos repetir un ultimo comando asi: ls -la /etc/ /home -> !ls 18. El comodín !$ se refiere al ultimo argumento -> ls -lt !$ = ls -lt /home 19. Comodín !^ refiere al primer argumento comando anterior -> ls -lt !^ = ls -lt /etc 20. El ^ reemplaza ocurrencias echo $BASS_COMLETION -> ^SS^SH^ 21. Experimente con CTRL+A, CTRL+D y CTRL+E ->inicio, borrar y final de la linea 22. Qué hace cd ~/Trabajo/; for file in *;do ls -l $file ; done -> lista archs en directorio Trabajo 23. Qué hace ls -l $(find . -name arc*) -> busca y lista con ls -l encontrado 24. Qué hace vi `find /etc -name fstab` -> busca pasa como argumento a VI 25. Busque archivos de nombre passwd en /etc con find -> find /etc -name “passwd” 26. Busque todos archivos arch1,2,3 modif hace 10 dias -> find ~ -name 'arch*' -mtime 10 27. Cámbiese al directorio Trabajo y cree Arch1,2,3 -> touch Arch1,2,3 28. Busque todos los A/arch1,2,3 -> find ~/Trabajo/ -name “[Aa]rch[1-3]” 29. Otra manera de hacerlo es: ->find ~/Trabajo \( -name 'Arch*' -o -name 'arch*' \) 30. Cree archivos de nombre nombre1,2,3.conf -> touch nombre{1,2,3}.conf 31. Busque todos los archivos que no terminan en .conf -> find . -name '*[^.conf]' 32. Busque igual que la anterior pero con negacion ! -> find . ! -name '*.conf' 33. Busque archivos creados en los ultimos 5 dias -> find ~ -ctime -5 34. Busque solo los directorios en /etc -> find /etc -type d 35. Busque archivos mas nuevos que arch1 directorio actual -> find . -newer arch1 36. Cree un directorio de nombre DIR en el directorio actual -> mkdir DIR 37. Busque mas nuevos que Arch1 y copielo a DIR -> find . -newer arch1 -exec cp \{\} DIR/ \; 38. Busque los archivos con permisos de lectura-escritura -> find . -perm 644 39. Igual que arriba pero con permisos en formato r,w y x -> find . -perm u=rw,go=r 40. Busque los archivos creados en los ultimo 5 dias -> find . -ctime 5 41. Busque en su home con permisos 020 o 002 -> find ~ \( -perm -020 -o -perm -002 \) 42. Busque los archivos en su disco mayor de dos mega -> find / -type f -size +2048 43. Busque el archivo cuyo inode es 1428846 -> find / -inum 1428846 44. Busque archivo inode es del 1233 y cuestione listar -> find . -inum 1233 -ok ls -i \{\} \; 45. Busque los archivos del usuario miguel en /home -> find /home -user miguel 46. Busque archivos en /etc con 5 enlaces apuntando a el -> find /usr/bin -links 5 47. Busque archivos y su nombre es passwd en /etc -> find /etc -name passwd -a type f

30

Práctica Fundamentos

CAPITULO 8
1. Procesos y Scripting del Shell 1. Practicar redirección y tuberías Práctica 8 de Básico 1. Ejemplo de script del shell .INTRODUCCION A SHELL SCRIPT (De Hamlet Rivera hamlet”codigolibre.org) INTRO DUCCION Shell que en castellano significa "concha", es le interprete de comandos del sistema. Es una interfaz de  texto de altas prestaciones, que sirve principalmente para tres cosas: administrar el sistema operativo,  lanzar aplicaciones ( e interactuar con ellas ) y como entorno de programación. Gnu/Linux se administra  editando archivos de configuración. Como norma general, se encuentran en: /etc dentro de direcciones  específicos para cada aplicación . Los programas, se ejecutan escribiendo el nombre del ejecutable, si  este se encuentra en el path (ruta por defecto para los mismos, normalmente: /usr/bin) o escribiendo el  nombre del ejecutable precedido por: ./, desde el directorio donde se encuentren. Los programas de  Shell no necesitan compilarse.  El Shell los interpreta linea a linea. Se les suele conocer como Shells Scripts y pueden ser desde  sencillas ordenes hasta complejas series de instrucciones para el arranque del propio sistema operativo .  En general, tienen una sintaxis bastante clara y suponen un buen punto de partida para dar los primeros  pasos en el mundo de la programación.  Yo no soy ningún experto programador. De hecho, estoy aprendiendo ahora mismo. Es un mundo  apasionante, pero un poco oscuro a veces. Entonces, si no soy un especialista en el tema, ¿Como me  atrevo a escribir sobre ello? Bueno, tengo mis motivos. Verán, me considero un buen comunicador, y creo  que mi forma de contar las cosas puede ser útil a los demás. Ello me animan a preparar tutoriales como  estos, y a publicarlos . Que es un shell­script  Un script es como se llama a un archivo (o conjunto de archivos) que contiene instrucciones (en nuestro  caso comandos de bash), y que necesita de un programa ayudante para ejecutarse (en nuestro caso la  propia terminal bash será el programa ayudante). Un script tiene cierta similitud con un programa, pero  existen diferencias. Generalmente, los programas están en lenguaje de máquina (la máquina lo entiende  directamente), mientras que los scripts son archivos que contienen en formato texto los comandos o  instrucciones que la aplicación ayudante ejecutará.  Aunque en principio esto puede resultar un tanto abstracto, vamos a verlo despacio y con ejemplos. Si no  has programado nunca, en este capítulo encontrarás el aprendizaje del shell­scripting en bash como una  sencilla introducción a la programación, que te ayudará a comprender después los fundamentos de otros  lenguajes de programación. No te preocupes, porque lo vamos a explicar todo de forma sencilla y no te  quedará ninguna duda.  Esta lección le permitirá dar un salto enorme en el aprovechamiento de su SO  GNU/Linux. Algunas partes del SO que no pertenecen al kernel están escritas en shell­cript.  Los shells del sistema UNIX                bash (Bourne­Again Shell): Versión GNU del shell estándar con características añadidas del shell C. Este  shell es el estándar de los sistemas LINUX.  Csh: El shell C de Berkeley.  Jsh: El shell de trabajo, una extensión del shell estándar.  31 Práctica Fundamentos

Ksh: El shell Korn.  Sh: El tradicional shell de Bourne.  Tcsh: Versión mejorada de csh.  Zsh: Versión mejorada de ksh.  Programación del shell      Para realizar un script, necesitamos:      1. Escribir los comandos del shell en un archivo de texto.      2. Hacer el archivo ejecutable (chmod +x archivo)      3. Escribir el nombre del archivo en la línea de comandos.  Cabe hacer algunas observaciones, si queremos utilizar otro tipo de shell para que interprete los  comandos debemos de colocar como primera línea en el archivo de texto el nombre del shell; por  ejemplo si nuestros comandos serán interpretados por el shell ksh, entonces colocamos como primera  línea: #!/bin/ksh.  Ahora que has practicado con bash y con el editor vim, ya estás preparado para crear tu primer script  bash. Si recordamos, un script era un archivo de texto plano con comandos; así que haz vim miscript.sh  y pon en él lo siguiente (lo explicaremos detenidamente a continuación):  #!/bin/bash # Esta línea será ignorada # Esta también echo "Hola" echo "Soy un script de shell."           Observemos la primera línea: #!/bin/bash. Esta línea es  característica de todos los scripts en  Gnu/Linux. Tras #! indicamos la ruta a la aplicación ayudante, la que interpretará los comandos del  archivo. En nuestro caso es bash, así que ponemos ahí /bin/bash, que es la ruta hacia la aplicación bash. Las dos últimas líneas son dos comandos, de los que luego serán ejecutados por bash. Como sabemos, el  comando echo saca por stdout o salida estandar (por defecto por pantalla) lo que le pasemos como  argumento, en este caso dos frases. Guardemos el script y salgamos de vim. Ahora lo ejecutaremos. La  primera forma de hacerlo es como sigue:  $ bash miscript.sh Hola Soy un script de shell             Como ves, todos los comandos del script han sido ejecutados. Aunque la forma más frecuente de ejecutar  scripts es, darles primero permisos de ejecución, como ya sabemos del capítulo de usuarios, grupos y  permisos:  $ chmod +x miscript.sh $ ./miscript.sh Hola Soy un script de shell Al darle permisos de ejecución, podemos ejecutar ahora nuestro script como si de un programa normal  se tratase. Esto es posible gracias a la primera línea del script, que hace que se llame inmediatamente a  la aplicación ayudante para procesar los comandos. Veamos un segundo ejemplo, llamelo operación.sh

32

Práctica Fundamentos

#!/bin/bash  echo “soy Gnu/Cal”  echo “Tu me dices lo que quieres calcular y yo te doy el resultado”  echo “Introduce el primer valor”  read valor1  echo “ Introduce el operador. Puedes escoger entre: [ + ­ / ]”  read operador  echo “ Introduce el segundo valor”  read valor2  echo “El resultado es:”  sleep 2  expr $valor1 $operador $valor2  sleep 1  echo “gracias por su tiempo!”  Procedamos a ejecutarlo $ chmod +x operación.sh $ ./operacion.sh Las tres primeras lineas son, por así decirlo, de presentación. En la cuarta linea hay un read, llamado  valor1. Es una variable, que va a introducir desde el teclado el usuario. Después, es necesario saber que  operación se quiere realizar (suma, resta o división). Para ello hay un nuevo read, llamado “operador”  para que el usuario pueda escoger. Después, tenemos el segundo valor de la operación llamado “valor2”.  El comando “sleep” lo único que hace es  esperar un poco de tiempo para que de la sensación de que el programa esta pensando poco antes de dar  el resultado. La operación matemática propiamente dicha se realiza con el comando es: expr. Como  veremos más tarde, hay otras formas de programar una calculadora.  Veamos ahora otro ejemplo. Se llama: juego.sh, y es el típico juego de preguntas y respuestas.  Solo tiene dos preguntas, pero es suficiente para ver como funciona. Está construido, sobre la estructura  if fi. El programa conoce la respuesta correcta y evalúa la respuesta del usuario. Si  acierta una pregunta se lo dice y pasa con la siguiente pregunta. Si acierta todas las preguntas le  da el titulo de “magister del universo”.  #!/bin/bash  clear  echo "Bienvenidos a GnuJuego."  sleep 2  echo "Soy el típico juego de preguntas y respuestas."  sleep 2  echo "Si aciertas todas las preguntas, te concedere el titulo de magister del universo."  echo "¿Como se llama el fundador del proyecto Gnu: stallan, torvalds o MIT ? "   read respuesta1  if [ $respuesta1 = stallman ] then  echo "Respuesta correcta."  else  echo "Lo siento, la respuesta correcta es: Richard Stallman."  fi  sleep 2  echo "Pasemos a la siguiente pregunta. ¿Qué célebre filosofo Griego tuvo por discípulo  a Alejandro Magno, platón, aristoteles o zenon?"  read respuesta2  33 Práctica Fundamentos

if test $respuesta2 = aristoteles  then  echo "respuesta correcta."  else  echo "Lo siento, la respuesta correcta es: Aristoteles."  fi  if test $respuesta1 = stallman    test $respuesta2 = aristoteles  then  echo "Eres un pequeño magister del universo."  fi  Como puede apreciarse, la estructura if fi, y la estructura case hacen cosas bastante similares.  Llevan a cabo una acción en función de un valor del usuario. En general, case se considera una evolución de if fi, ya que permite el mismo resultado, escribiendo menos código. Sin embargo, el uso  de if fi es perfectamente correcto. La evaluación de las condiciones se realiza mediante el comando test.  Este, comprueba si la variable es igual al valor que le hayamos indicado. Por supuesto, test puede hacer  muchas más cosas, como comparar si un número es mayor o menor que otro, etc. Al finál del script, se  evalúan dos variables a la vez. Es necesario escribirlas en dos lineas diferentes.  Veamos otro ejemplo: calc2.sh #!/bin/bash #Script disenado para simular una caluladora que multiplica la tabla de un numero introducido  desde  el 1 hasta el 12 #Hecho por Hamlet Rivera <riverham@gmail.com> max=12  while  true   clear     do                                  #MENU DE OPCIONES#         echo ­n "                            |===========================| | MENU DE OPCIONES |                           |­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­|     | 1. Ver la tabla de un numero introducido                |     | 2. Salir del programa                                               |     |­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­|     Elija su opcion...    "                             read op                case $op in              1)        echo  " "       echo ­n "Introduzca el numero  que desea multiplicar "         read num       echo  " Imprimiendo los resultados"                echo " "                 i=0 while [ $i ­lt $max ] 34 Práctica Fundamentos

  do 

          done        sleep 5               clear              ;;               2) exit;;             *) echo "***ERROR, NO HA ELEGIDO UNA OPCION VALIDA***"              sleep 3              clear              ;;            esac     done #!/bin/bash  #Script disenado para buscar un archivo introducido seguido por la ruta  #de busqueda, ademas muestra quien es el dueno, a que grupo pertenece y cuales  #son sus permisos, asi como su fecha de creacion  #Hecho por Hamlet Rivera <riverham@gmail.com>  #set ­x     clear     echo ­n " Escriba el nombre del archivo:_  "     read archivo     echo " "     echo  "Escriba la ruta  en la ruta en la que desea que se "     echo ­n " haga la busqueda empezando con la barra:_  "     read ruta     comprueba=`cd $ruta 2>error1.txt`     if test $? ­eq 0     then       i= `find  $ruta ­name $archivo `     else      echo " La ruta $ruta no existe"        rm ­rf error1.txt      exit       fi         if [  ­a $archivo ]            then             dueno=`ls ­l $archivo`             echo " "             echo "­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­"             echo "El archivo buscado es"             echo "­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­"             echo " "             echo " $dueno "             echo " "             else             echo " "         echo "**ERROR** archivo <<<..$archivo..>>> no se encuentra en $ruta ... "  35 Práctica Fundamentos

i=`expr $i + 1`  result=`expr $num \* $i` echo "$num * $i = $result"

       echo " "      fi  3. Ejemplos de sed y awk .- Practica 8 y 15 de Básico

CAPITULO 9
Práctica de VIM .- Básico Práctica 12

36

Práctica Fundamentos

Sign up to vote on this title
UsefulNot useful