Sunteți pe pagina 1din 36

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 modificar 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 aparece 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 duro.
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 Teclado : 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 Automá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 con Disk Druid: Para usuarios con amplio conocimiento del
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 ("Boot 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 Red : Seguido debe indicar los parámetros para acceso a red, ya
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 ("Firewall") : 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íz (root) : Posteriormente debe indicar una contraseña
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:
AutomaticLoginEnable=true
AutomaticLogin=nombre_usuario

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 Telnet
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 intentar 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 RemoteGreeter 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”


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.
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

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 TrueType 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 TrueType -
"fonts.scale" y "fonts.dir". Estos archivos simplemente contienen una lista con el nombre
completo de las fuentes para cada fuente TrueType. 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
TrueType 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.

B.- Agregarle contraseña de texto a grub


1. Si deseamos que nadie pueda ingresar a grub sin una contraseña, iniciamos
normalmente el sistema.
2. Abrimos el archivo /boot/grub/menu.lst
3. Nos dirigimos a la linea que dice password topsecrete
4. Colocamos la contraseña que deseamos, para la practica la dejamos como esta.

22 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--- 2 jperez fcld 4096 Dec 28 04:09 tmp
-rw-r--r-- 1 jperez fcld 969 Dec 21 02:32 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:

r- 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.

w - 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.

x- 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.

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 - -w- 3 - -wx 4 – r-- 5 – r-x 6 – rw- 7 - 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 propietario del archivo archivo, además de hacer este
perteneciente al grupo fcld.

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

1. Cual es la diferencia entre ls -l -a y ls -a -l y ls -al o ls -la -> Ninguna


2. Dirijase a su directorio home -> cd
3. Crearemos un Directorio llamado Trabajo -> mkdir Trabajo
4. Hagamos este directorio nuestro directorio de 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 
i=`expr $i + 1`
 result=`expr $num \* $i`
echo "$num * $i = $result"
          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
       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

S-ar putea să vă placă și